CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

请教非模态对话框的初始化

楼主kknd0122()2006-05-04 13:55:42 在 VC/MFC / 界面 提问

以前用非模态对话框的时候都是在程序中通过一个按钮或菜单调用,现在我想让一个通过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

相关问题

关键词

得分解答快速导航

  • 帖主:kknd0122

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo