如何以编程方式结束对话框(即属性表)



我正在尝试从代码中关闭对话框(基本上派生自属性表类)。 以下是我的代码:

LRESULT CSettingsSheet::OnCloseSettings(WPARAM wParam, LPARAM lParam)
{
EndDialog(IDCANCEL);
return 0;
}

问题是endDialog不仅终止对话框,还终止主应用程序窗口。 这个问题的原因可能是什么?

顺便说一句,我在主窗口中创建此对话框,如下所示

if(settingsSheet.DoModal() == IDOK)
{
}
else
{
}

理想情况下,我应该使用 IDCANCEL 设置此 domodal 值,而不是调用结束对话框。

谢谢库拉姆。

您需要将PSM_PRESSBUTTON消息发送到属性表窗口:

模拟属性表按钮的选择。您可以显式发送此消息,也可以使用 PropSheet_PressButton 宏发送此消息。

PSBTN_CANCEL - 选择"取消"按钮。

PSBTN_OK - 选择"确定"按钮。使用 Aero 向导样式 (PSH_AEROWIZARD) 时,此值无效。

MFC 有一个用于此 CPropertySheet::P ressButton 的函数。

最新更新