BOOL CMyApp::InitInstance()
{
......
CWinApp::InitInstance();
AfxEnableControlContainer();
CMyDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO:在此放置处理何时用“确定”来关闭
//对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO:在此放置处理何时用“取消”来关闭
//对话框的代码
}
::MessageBox(NULL,"Hello","test",MB_OK);
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}我试过,MessageBox放在dlg.DoModal()之前,就可显示,
放在之后,就弹不出MessageBox。
不知道为什么。

解决方案 »

  1.   

    if (nResponse == IDOK)
    {
    // TODO:在此放置处理何时用“确定”来关闭
    //对话框的代码
    }
    else if (nResponse == IDCANCEL)
    {
    // TODO:在此放置处理何时用“取消”来关闭
    //对话框的代码
    }
    是不是在两个todo中都有代码return或者都有跳转到::MessageBox(NULL,"Hello","test",MB_OK);之后的地方,加断点看看。
      

  2.   

    确实有当一声。
    但为什么会没有窗口呢?
    我单步执行过程序,在dlg.Modal返回后,
    确实执行了MessageBox函数,
    而且我检查了一下返回值,是1。
    但为什么就是没有弹出窗口,而只有声音,好像自动按了OK一下的。
      

  3.   

    http://expert.csdn.net/Expert/topic/1281/1281080.xml?temp=1.017398E-02
      

  4.   

    对的,你程序要结束了,你可以在下面加一段sleep(1000);