create的dialog一般是modalless,如果你的程序本身就是只有一个dialog,就无所谓了,看不出modalless的效果。modalless本来就是让你有机会切换到本程序的其他窗口。

解决方案 »

  1.   

    1。Create()创建的对话框是非模态,即它可以失去焦点(但仍有效),但是对话框终止时需调用DestroyWindow();在成员函数中创建的非模态对话框要注意其作用域和有效性.
    2。DoModal()显示一个模态对话框,在其有效期内不能失去焦点,调用OnCancel(),OnOK()返回IDOK,IDCANCEL...
      

  2.   

    你的问题应该是ShowWindow出来的对话框和用DoModal出来的对话框有什么不同
    一般使用非模态(ShowWindow)和模态(DoModal)来区分,也可以这样认为非模态的对话框是独立的,而模态的是非独立的
      

  3.   

    再次说明:我知道模态和非模态的区别。我的问题是,我碰到一个对话框应用程序,它的对话框是在InitInstance()里用下面的办法创建的
    CMyDlg* pMainWnd = new CMyDlg;
    pMainWnd->Create();
    假如我在这里用
    CMyDlg dlg;
    dlg.Domdal;
    创建的对话框照样能最大化最小化,也就是说是非模态的,因为它就是应用程序的主窗口,那么用第一种方法有什么好处呢,有什么必要呢?