Visual c++ 当用户按下X按钮时确认退出

Visual c++ 当用户按下X按钮时确认退出,visual-c++,mfc,Visual C++,Mfc,我想问用户“您确定要退出应用程序吗?”问题。如果用户按Yes,应用程序将终止。如果用户按“否”,应用程序将继续运行。我该怎么做 < >我使用Visual C++ 2008和MFC .< /P> < P>需要处理 > WMyCalpHO//C>消息,这可以在MFC中执行,并提供 OnClose < /C>函数> < /P> (类向导可以为您执行此操作。) 是一个MSVC扩展,允许您引用最直接的基类。如果您正在另一个编译器中编译(MFC应用程序不太可能),或者使用非标准扩展会让您感到不舒服,那么您可

我想问用户“您确定要退出应用程序吗?”问题。如果用户按Yes,应用程序将终止。如果用户按“否”,应用程序将继续运行。我该怎么做


< >我使用Visual C++ 2008和MFC .< /P> < P>需要处理<代码> > WMyCalpHO//C>消息,这可以在MFC中执行,并提供<代码> OnClose < /C>函数> < /P> (类向导可以为您执行此操作。)


是一个MSVC扩展,允许您引用最直接的基类。如果您正在另一个编译器中编译(MFC应用程序不太可能),或者使用非标准扩展会让您感到不舒服,那么您可以替换基类的实际名称。

Marijke建议的方法是正确的。但要编译它,您必须在CMainFrame消息映射中添加_WM_CLOSE,并且必须使用Marijke使用CFrameWnd的实际基类。(有几个可能的基类。)例如,如果基类为CMDIFrameWndEx,则消息映射可能如下所示:

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
ON_WM_CREATE()
ON_WM_CLOSE()
....

错误C2248:“CFrameWnd::OnClose”:无法访问在类“CFrameWnd”中声明的受保护成员错误C2352:“CFrameWnd::OnClose”:非法调用非静态成员函数不在主类结构中调用它。并尝试将void-CMainFrame更改为静态void-CMainFrame。哦,不用麻烦使用谷歌了。:)这种UI太糟糕了,大多数用户下一步都会寻找卸载程序。更为典型的信息是“当你点击“是”和“不是”时,你将失去十分钟的生命”。编写更好的代码,确保用户已启动并再次运行,在10秒内不会丢失数据。
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
ON_WM_CREATE()
ON_WM_CLOSE()
....