请教非模态对话框的初始化
以前用非模态对话框的时候都是在程序中通过一个按钮或菜单调用,现在我想让一个通过appwizard建立的对话框程序在启动时就用非模态的方法显示出来,请问以下这些代码应该加在哪里?
dlg=new CMyDlg; //CMydlg *dlg=NULL的声明位于全局区
dlg-> Create(IDD_PS_DIALOG);
dlg-> ShowWindow(SW_SHOW);
我已经把原来appwizard默认在app类中的initinstance里生成的dlg.domodal()等等有关模态对话框的代码都删除了,并且把上面的三行代码试着放入app类中的initinstance,CMydlg类中的OnInitialDialog也试过了,可是都不行,运行结果是那个对话框闪了一下就消失了,请问这是什么原因?该怎么解决?
问题点数:100、回复次数:8Top
1 楼lyl_rabbit(阿牛)回复于 2006-05-04 15:13:41 得分 0
dlg=new CMyDlg; //CMydlg *dlg=NULL的声明位于全局区
dlg-> Create(IDD_PS_DIALOG);
//加上下面这两句试一下
DWORD style = dlg->GetStyle();
dlg->ModifyStyle(style,WS_CHILD|WS_VISIBLE,1);
dlg->SetParent(pParent);
dlg-> ShowWindow(SW_SHOW);
Top
2 楼lyl_rabbit(阿牛)回复于 2006-05-04 15:14:32 得分 0
在你上面那两地方创建对话框应该都行的Top
3 楼mynamelj(风之羽翼)回复于 2006-05-04 15:25:50 得分 0
模态的就应该使用DoModal方法,而非模态的就应该使用Create方法,注意非模态的生命周期是随着类的析构而消失.Top
4 楼kknd0122()回复于 2006-05-04 16:15:48 得分 0
还是不行啊,加了之后就debug assertion failed 了。
问题尚待解决
顶Top
5 楼kknd0122()回复于 2006-05-05 16:51:18 得分 0
顶起来!Top
6 楼lixiaosan(小三)回复于 2006-05-08 14:40:04 得分 0
不知道开始是个非模态的有何用处?Top
7 楼flyelf(空谷清音)回复于 2006-05-08 15:14:36 得分 0
把InitInstance的return FALSE修改为return TRUETop
8 楼zhucde(【風間苍月】★<==>★【虚拟闲人】)回复于 2006-05-08 15:56:23 得分 0
mynamelj(风之羽翼)说的很对,
如果你用非模态对话框的话,一经调用后马上就return,也就是程序就结束了.
除非在此你先调用一个隐藏起来的DoModalTop




