在对话框的系统菜单栏中的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);
}
}
现在我把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);
}
}
在按照非模态对话框创建方式在XXDLg.h CXXDlg类内部 定义你的这个dlgAbout about对话框指针,
在参考http://www.vckbase.com/study/article/vc_chap/chap5_4.htm 这样方式创建才行。
CAboutDlg dlgAbout;
//dlgAbout.DoModal(); //系统生成 dlgAbout.Create(IDD_ABOUTBOX,this); //我的测试
dlgAbout.ShowWindow(SW_SHOW);
生成了,但是到此变量的生命周期也结束了
的话 可以create
定义的对象好像不能create