在我的应用程序的一种情况下,我想在对话框的 OnInitDialog 中或在此函数之后立即结束应用程序。有什么办法吗?
我尝试使用 Windows 消息——在 OnInitDialog 调用 SendMessage 和在已发送消息的处理程序中调用 OnClose——但它没有达到我的预期,因为对话框仍然出现。
在我的应用程序的一种情况下,我想在对话框的 OnInitDialog 中或在此函数之后立即结束应用程序。有什么办法吗?
我尝试使用 Windows 消息——在 OnInitDialog 调用 SendMessage 和在已发送消息的处理程序中调用 OnClose——但它没有达到我的预期,因为对话框仍然出现。
PostQuitMessage(0)
在WM_INITDIALOG
处理程序主体中将完成这项工作。
X
您可以通过发送WM_SYSCOMMAND
消息来模拟用户单击对话框角落中的 :
PostMessage(WM_SYSCOMMAND, SC_CLOSE, 0);
最简单的解决方案:
CMyDialog::OnInitDialog()
{
if( "My Condition is invalid" )
{
EndDialog(-1);
return FALSE;
}
}
您必须在 EndDialog 之后执行“返回 FALSE”,因为正如您可以在 Microsoft 文档 CDialog(classe)中阅读的那样,EndDialog 不会立即关闭对话框,而是会生成一个通知,当 Microsoft 处理该通知时必须生效以结束对话框.