热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C++如何关闭窗口

我在MFC里设了一个窗口,IDD_DATASHOW.在A函数里打开这个窗口A{DataShowDlgShow;Show.DoModal();}我现在希望在调用A的时候,如果窗口原
我在MFC里设了一个窗口,IDD_DATASHOW.在A函数里打开这个窗口
A{
DataShowDlg Show;
Show.DoModal();

我现在希望在调用A的时候,如果窗口原来是打开的,就先关闭,然后再打开,这个代码应该怎么写呢?

16 个解决方案

#1


Show.EndDialog();

#2


1.DataShowDlg Show;声明为一个全局变量,如果A函数是类的成员函数的话,则可以把Show声明为类的成员变量
2.A函数中实现如下:
if(NULL != Show.GetSafeHwnd())
{
    Show.EndDialog(IDCANCEL);//相当于CDialog::OnCancel();如果是EndDialog(IDOK),则相当于CDialog::OnOK();
}

Show.DoModal();

#3


楼上都说了,我路过。。。

#4


我觉得楼主可以直接先关闭,再打开,不用管他以前是不是已经打开了,反正即便是没打开你关闭只能是失败什么的。。。怕什么

#5


DataShowDlg Show;
if(NULL != Show.GetSafeHwnd())
{
  Show.EndDialog(IDCANCEL);//测试中发现,这里不管窗口是否打开,都是不执行的 }
Show.DoModal();
代码这么写没错吧,为什么那个关闭的代码不执行呢?

#6


前提是DataShowDlg Show;声明为一个全局变量。。。楼主,你定义的那个DataShowDlg Show;不是你已经打开的那个。。。

#7


DataShowDlg Show;
这行代码是声明一个局部变量,还是全局变量啊?

#8


局部变量啊,不是全局变量。

#9


我用计时期10秒触发一个事件,这个事件里有打开窗口的代码。现在程序编程10秒就打开一个窗口,原来已经打开的也不关闭。所以我想知道一下怎么把原来已经打开的窗口关闭。本人初学C++,属于小白。

#10


如果只有一个线程在调用的话, 应该是不会有问题的. 因为 DoModal() 会等你的对话框关闭后才返回.

但是这也不是绝对的, 虽然说 DoModal() 还没有返回, 但是你的窗口的消息处理函数一样会被调用. 只要你确保 DataShowDlg 这个对话框的消息处理函数不会调用 A 函数就 OK 了.

#11


把你的 DataShowDlg Show 声明成一个函数内的 static 变量吧.

#12


简单就别局部变量,一定要局部变量就先FindWindow,找到了就关闭,可以用SetProp,GetProp辅助

#13


代码应该怎么写呢?楼上说的我没大看明白。。。。

#14


你就用static声明Show吧!

#15


static DataShowDlg Show;这样写

#16


该回复于2012-03-26 09:55:41被版主删除

推荐阅读
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • Android获取app应用程序大小的方法
    Android获取app应用程序大小的方法-Android对这种方法进行了封装,我们没有权限去调用这个方法,所以我们只能通过AIDL,然后利用Java的反射机制去调用系统级的方法。 ... [详细]
  • 整个窗体当设置QT的窗体(QMainWindow,QDialog)时,直接用targetForm->setWindowOpacity()函数即可实现,效果为窗体及窗体内所有控件都透明化了。二、 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Echarts图表重复加载、axis重复多次请求问题解决记录
    文章目录1.需求描述2.问题描述正常状态:问题状态:3.解决方法1.需求描述使用Echats实现了一个中国地图:通过选择查询周期&#x ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
author-avatar
博士吃货
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有