CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

[古怪古怪真古怪,关于非模态对话框]代码入内:

楼主Gutta(冯大狂)2005-07-01 08:23:55 在 VC/MFC / 基础类 提问

void   CMyView::OnModalessDlg()  
  {  
      if   (FindWindow(NULL,"Dialog")   !=   NULL)   return;  
      CMyModalessDlg   *p   =   new   CMyModalessDlg;  
      p->Create(ID_DLG1,NULL);  
      p->ShowWindow(SW_SHOW);  
  }  
   
   
  我的第一句是为了控制非模态对话框只出现1次,如果存在则不能再出现同样的一个对话框。  
   
  为什么第一次运行是没有问题的,但是一旦关闭了那个对话框以后,再运行这段代码的时候就没有反应了呢?  
   
  也就是FindWindow(NULL,"Dialog")返回的不是NULL,可是我明明已经关闭了那个窗体啊!!  
   
  ---------------------  
   
  还有一个问题,我这里的p指针,什么时候应该释放掉delete呢????  
   
  请教了。 问题点数:10、回复次数:2Top

1 楼stevecrisewu(月亮骑士)回复于 2005-07-01 08:48:02 得分 0

你关闭的时候要手动删除调p  
   
  而且你这里紧紧是一个局部变量,你需要将其保存到全局里面  
   
  你为什么要用modaless呢  
   
  如果是全局的,你直接判断p是否为空就可以了  
  Top

2 楼xiaoqiqixiao(七七)回复于 2005-07-01 09:05:37 得分 10

必须调用CWnd::DestroyWindow而不是CDialog::   EndDialog来关闭非模态对话框。调用CWnd::DestroyWindow是直接删除窗口的一般方法。由于缺省的CDialog::OnOK和   CDialog::OnCancel函数均调用EndDialog,故程序员必须编写自己的OnOK和OnCancel函数并且在函数中调用   DestroyWindow来关闭对话框。Top

相关问题

  • 无模态对话框
  • 模态对话框问题
  • ▲△▲△-- 挑战性问题,高手请进:如何动态写模态对话框(ModalDialog)的HTML代码
  • 调用模态对话框的问题
  • 非模态对话框的问题
  • 如何设置模态对话框
  • 有关模态对话框的问题!
  • 模态对话框中的session
  • 如何创建非模态对话框?
  • 模态对话框的问题

关键词

  • 函数
  • null
  • 古怪
  • 对话框
  • 调用
  • 非模态
  • destroywindow
  • 关闭
  • cdialog
  • 时候

得分解答快速导航

  • 帖主:Gutta
  • xiaoqiqixiao

相关链接

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

广告也精彩

反馈

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