我正在尝试制作一个基于对话框的 MFC 应用程序,其中两个对话框需要按顺序显示。
这意味着,一旦显示并关闭第一个对话框(模式)(按确定),就需要调出第二个对话框。我的要求是第二个对话框应该是无模式的。
但我观察到的是显示了第二个对话框,但没有调用任何消息处理函数来响应用户消息。我认为消息映射本身不起作用,而正在调用覆盖的函数(如 OnInitdialog)。我尝试用模态对话框替换这个无模式对话框,唉,doModal() 本身失败了。这是小代码:
CFirstDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
CSecondDlg *dlgModeLess = new CSecondDlg();
dlgModeLess->Create(CSecondDlg::IDD,NULL);
m_pMainWnd = dlgModeLess;
dlgModeLess->ShowWindow(SW_SHOW);
dlgModeLess->UpdateWindow();
}
这是第二个对话框的消息映射:
BEGIN_MESSAGE_MAP(CSecondDlg, CDialog)
ON_MESSAGE(TRAY_MESSAGE,OnTrayMessage)
ON_BN_CLICKED(IDOK, &CSecongDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_RADIO1, &CSecondDlg::OnBnClickedRadio1)
END_MESSAGE_MAP()
我认为我在做一些概念上错误的事情。请分享您对解决这种情况需要做些什么的想法。