如何以编程方式结束对话框(即propertysheet)

时间:2013-10-02 06:24:52

标签: c++ winapi mfc

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

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

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

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

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

}
else
{

}

理想情况下,我应该使用IDCANCEL设置此domodal值,而不是调用end dialog。

谢谢, Khurram。

2 个答案:

答案 0 :(得分:4)

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

  

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

     

PSBTN_CANCEL - 选择取消按钮。

     

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

答案 1 :(得分:0)

MFC具有此CPropertySheet :: PressButton的功能。