在对话框的系统菜单栏中的about菜单,点击后,出现about对话框,这都是VC自己生成的。
现在我把dlgAbout.DoModal(),改成
dlgAbout.Create(IDD_ABOUTBOX,this);
dlgAbout.ShowWindow(SW_SHOW);
怎么就显示不了对话框了?不就是改成非模式的嘛。为了验证这个问题,我又自己加了一个菜单,让其点击弹出自定义Date对话框,按照这个方法是可以的。那么问题究竟在什么地方,about就不能这样show出来吗?void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
//dlgAbout.DoModal();   //系统生成 dlgAbout.Create(IDD_ABOUTBOX,this);  //我的测试
dlgAbout.ShowWindow(SW_SHOW);
}
if((nID & 0xFFF0) == IDM_MYTEST)    //测试所用,按照如下方法,可以弹出自定义date对话框
{
AfxMessageBox(_T("ok"));

pDlg = new DateDialog();
pDlg->Create(IDD_DIALOG1,this);
pDlg->ShowWindow(SW_SHOW);
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

解决方案 »

  1.   

    你应该查找出默认的about对话框和住对话所有的联系,并把其去掉,
    在按照非模态对话框创建方式在XXDLg.h CXXDlg类内部 定义你的这个dlgAbout about对话框指针,
    在参考http://www.vckbase.com/study/article/vc_chap/chap5_4.htm 这样方式创建才行。
      

  2.   

    局部变量的原因
    CAboutDlg dlgAbout; 
    //dlgAbout.DoModal();  //系统生成 dlgAbout.Create(IDD_ABOUTBOX,this);  //我的测试 
    dlgAbout.ShowWindow(SW_SHOW); 
    生成了,但是到此变量的生命周期也结束了
      

  3.   

    如果是CAboutDlg *dlgAbout;
    的话 可以create
    定义的对象好像不能create