如何在Dialog关闭的时候销毁Dialog的窗体句柄?

snaill 2004-09-16 05:11:38
希望通过工具条一次点击打开DIALOG,再点击关闭DIALOG

现在是通过判断窗体的有效性决定是否要Create DIALOG,实现代码如下。
if (!m_dlg.GetSafeHwnd())
{
m_dlg.Create(IDD_DIALOG, this);
m_dlg.ShowWindow(SW_SHOW);
}
else
{
m_dlg.SendMessage(WM_CLOSE);
m_dlg.DestroyWindow();
}

但是当DIALOG打开后一次点击打开DIALOG,然后点击DIALOG的关闭键,需要再点2次才可以显示DIALOG,跟踪发现Dialog在关闭后,并没有销毁HWND,怎么能够方便在DIALOG关闭的时候销毁HWND?不知谁有什么好的方法?
...全文
444 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
老夏Max 2004-09-16
你可以在CMainFrame中定义一个HWND,然后在使用GetSafeHwnd以后,将获得的HWND付给那个变量,呵呵,f
  • 打赏
  • 举报
回复
tiejun 2004-09-16
EndDialog();
  • 打赏
  • 举报
回复
老夏Max 2004-09-16
楼上的方法还需要获得HWND吧?应该使用::PostMessage(HWND,WM_CLOSE);
用在InitDialog中使用GetSafeHwnd获得对话框的HWND,呵呵
  • 打赏
  • 举报
回复
snaill 2004-09-16
楼上的,不是说了必须要释放资源的,不能使用ShowWindow的方法
  • 打赏
  • 举报
回复
KiGhost 2004-09-16
应该在SendMessage(WM_CLOSE)后 DestroyWindow ();
  • 打赏
  • 举报
回复
老夏Max 2004-09-16
显示的时候就ShowWindow(SW_SHOW); 隐藏的时候就ShowWindow(SW_HIDE); 增加一个标志位,判断是否显示了!
  • 打赏
  • 举报
回复
老夏Max 2004-09-16
呵呵,不会那么不理解吧。例如:
C××Dlg * pDlg;//头文件中定义

pDlg = new C××Dlg;
pDlg->Create();

最后在析构函数中删除pDlg
  • 打赏
  • 举报
回复
flyelf 2004-09-16
就是在OnClose中DestroyWindow
  • 打赏
  • 举报
回复
snaill 2004-09-16
1楼不行,因为dialog调用很多的资源,必须释放
2楼最后是那里阿?在dialog外边因为无法判断dialog的状态,所以肯定不行;如果在里面,总不能再OnClose里面吧?
  • 打赏
  • 举报
回复
老夏Max 2004-09-16
或者用Dialog类的指针,在最后delete那个指针就行了!
  • 打赏
  • 举报
回复
老夏Max 2004-09-16
m_dlg.DestroyWindow(); 改为
m_dlg..ShowWindow(SW_HIDE); 不就行了?
  • 打赏
  • 举报
回复
相关推荐
发帖
界面
加入

1.5w+

社区成员

VC/MFC 界面
社区管理员
  • 界面
申请成为版主
帖子事件
创建了帖子
2004-09-16 05:11
社区公告
暂无公告