如何关闭dialog对话框

pyhjy 2001-03-23 11:19:00
我在singledocument中产生一个dialog,dialog没有button,我希望通过点标题栏上的关闭按钮关闭dialog,但用destroywindow和enddialog都会在程序运行时出错。
我想知道,点击叉号时对应的是那个消息?又如何能安全的关闭dialog?
...全文
4117 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
joke100 2001-03-23
  • 打赏
  • 举报
回复
Destroying the Dialog Box
Home | Overview | How Do I | Sample | Tutorial

Modal dialog boxes are normally created on the stack frame and destroyed when the function that created them ends. The dialog object’s destructor is called when the object goes out of scope.

Modeless dialog boxes are normally created and owned by a parent view or frame window — the application’s main frame window or a document frame window. The defaultOnClose handler callsDestroyWindow, which destroys the dialog-box window. If the dialog box stands alone, with no pointers to it or other special ownership semantics, you should overridePostNcDestroy to destroy the C++ dialog object. You should also overrideOnCancel and call DestroyWindow from within it. If not, the owner of the dialog box should destroy the C++ object when it is no longer necessary.


点击叉号对应的消息应该是WM_CLOSE.在这里不合适...
你用EndDialog时传的参数是什么?
如果是个无模式对话框那么不能调用EndDialog,也不要调用基类CDialog的OnOk,OnCancel等等东西.对于无模式对话框的关闭一般使用DestroyWindow.如果对话框是new来的,还要重载PostNcDestroy 以便delete掉对话框这个C++对象.

试试重载对话框的OnClose,OnCancel,注意如果是无模式重载对话框不要在里面调用基类的相应函数,以避免对EndDialog的调用.



panda_w 2001-03-23
  • 打赏
  • 举报
回复
你创建的是什么对话框,让系统自己处理关闭不是更好?
你出错的原因可能是因为系统在你点击那个关闭按钮后又destroywindow或者enddialog了
所以会出错的
YuHao 2001-03-23
  • 打赏
  • 举报
回复
点X对应的消息应该是OnNcLButtonDown,wParam=HTCLOSE,不过如果你只是想关闭对话框的话,由系统来处理这个过程就行了,不用自己再添加什么。在那里调用的destroywindow?
xiaoxxx 2001-03-23
  • 打赏
  • 举报
回复
这个消息根本不用重载的,仅仅退出的话,直接调用此方法或发WM_COLSE消息;

你如果确实要用到EndDialog方法,就自己加一个方法或消息就可以.

这里问题很简单,OnClose本身要处理关闭,你又调用了EndDialog,必又一个是参考无效窗口句柄.
pyhjy 2001-03-23
  • 打赏
  • 举报
回复
有人愿意给我想个解决的办法吗?
pyhjy 2001-03-23
  • 打赏
  • 举报
回复
我的dialog是模式对话框,在wm_close()中调用类的EndDialog方式参数为(IDCANCEL);
可就是点击时出现错误。到出错处是{ ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, message, wParam, lParam); }哎,不知什么原因呀???!!!

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧