我覆盖了 WM_CLOSE,现在如何从应用程序中出来

Posted

技术标签:

【中文标题】我覆盖了 WM_CLOSE,现在如何从应用程序中出来【英文标题】:I overrided WM_CLOSE, how to came out from application now 【发布时间】:2013-04-10 05:25:46 【问题描述】:

我是 Windows 编程的新手,我编写了一个带有单个对话框的应用程序。在那之后,我覆盖了 CWnd::OnClose 以在退出应用程序之前做一些事情。之后我需要从应用程序中退出。但是如果我通过重写的方法发布或发送带有 WM_CLOSE 事件的消息,它也会被调用,所以现在如何从应用程序中退出。

class MyDlg : public CDialogEx

public:
afx_msg void OnClose();
;

BEGIN_MESSAGE_MAP(MyDlg , CDialogEx)
ON_WM_CLOSE ()
END_MESSAGE_MAP()

void MyDlg:: OnClose()

  //what code I should write here to exit from application. 

【问题讨论】:

【参考方案1】:

在你做完你的事情之后写下这个:

__super::OnClose();

【讨论】:

这里的_super是什么意思,是指主窗口。 这是一个“Microsoft 特定”代码,允许调用基本方法。在标准 c++ 中,您将使用:CDialogEx::OnClose(); Microsoft 为您提供了一个快捷方式。你甚至可以使用Defaut(); - 另一个快捷方式

以上是关于我覆盖了 WM_CLOSE,现在如何从应用程序中出来的主要内容,如果未能解决你的问题,请参考以下文章

C++ COM、Direct2D、Win32 和 WM_CLOSE

WM_CLOSE 消息和应用程序冻结

当模式对话框处于活动状态时,检测主应用程序窗口上的 WM_CLOSE 事件?

cocoapods 安装中出的太多问题

Win32 对话框上的 WM_CLOSE 和 IDCANCEL

应用不透明覆盖来控制