硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2520|回复: 4
收起左侧

[emWin] WM_DeleteWindow删除不了窗口

[复制链接]

29

主题

77

回帖

164

积分

初级会员

积分
164
发表于 2018-9-7 22:13:26 | 显示全部楼层 |阅读模式
#include "MainTask.h"
#include "bsp_power.h"


WM_HWIN  hShutDownWin;

#define ID_FRAMEWIN_0      (GUI_ID_USER + 0x00)
/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { FRAMEWIN_CreateIndirect, "ShutDown", ID_FRAMEWIN_0, 60, 100, 120, 100, 0, 0x0, 0 },
  { TEXT_CreateIndirect, "确认关机", GUI_ID_TEXT0,  27, 14, 80, 20, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "确认",   GUI_ID_BUTTON0, 13, 44, 40, 20, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "取消",   GUI_ID_BUTTON1, 65, 44, 40, 20, 0, 0x0, 0 },
};




/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
  int     NCode;
  int     Id;

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Framewin'
    //
    hItem = pMsg->hWin;
    FRAMEWIN_SetTitleHeight(hItem, 20);
    FRAMEWIN_SetFont(hItem,&GUI_Font20_ASCII);
    hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_TEXT0);
    TEXT_SetFont(hItem, &GUI_FontSong16x16);
    hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON0);
    BUTTON_SetFont(hItem, &GUI_FontSong16x16);
    hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON1);
    BUTTON_SetFont(hItem, &GUI_FontSong16x16);
    break;
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case GUI_ID_BUTTON0: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        break;
      case WM_NOTIFICATION_RELEASED:
        break;
      }
      break;

  case GUI_ID_BUTTON1: /* 取消按键 */
       switch(NCode) {
       case WM_NOTIFICATION_CLICKED:
         break;
       case WM_NOTIFICATION_RELEASED:
          WM_DeleteWindow(hShutDownWin);
         break;
       }
       break;
    }
    break;
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}

/*
*********************************************************************************************************
*    函 数 名: CreateShutDownBox
*    功能说明: 创建关机提示框
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
void CreateShutDownBox(void)
{
    hShutDownWin =  GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
}



代码如上,一切正常,也能执行到WM_DeleteWindow处,但是就是删除不了这个窗口。这种情况遇到过吗

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-9-8 02:12:51 | 显示全部楼层
测试了下,删除没问题啊。
回复

使用道具 举报

29

主题

77

回帖

164

积分

初级会员

积分
164
 楼主| 发表于 2018-9-9 19:32:27 | 显示全部楼层
eric2013 发表于 2018-9-8 02:12
测试了下,删除没问题啊。

辛苦,辛苦,现在用WM_SendMessageNoPara发送用户消息到主窗口,然后创建该消息窗口,发现是发送用户消息的地方不同就导致这种情况发生,也没有重复建立窗口。即使是在同一函数的两种条件下,发送用户消息,也出现了,一个能删除,一个删除不了。很无解,我试试用隐藏的办法吧。
回复

使用道具 举报

29

主题

77

回帖

164

积分

初级会员

积分
164
 楼主| 发表于 2018-9-9 19:38:37 | 显示全部楼层
eric2013 发表于 2018-9-8 02:12
测试了下,删除没问题啊。

隐藏,显示切换没问题。暂且这样吧
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-9-10 00:56:43 | 显示全部楼层
hecudashi 发表于 2018-9-9 19:38
隐藏,显示切换没问题。暂且这样吧

也行,估计是你的程序模板出问题了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-17 06:54 , Processed in 0.232854 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表