热门标签 | 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被版主删除

推荐阅读
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • VC++ 文件操作实践案例
    本文介绍如何在Visual C++ 6.0环境下,通过下载的VC源代码实现文件的基本读写操作,并解决常见的运行错误。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 树莓派4B:安装基础操作系统指南
    本文将详细介绍如何为树莓派4B安装基础操作系统,包括所需材料、镜像下载、镜像烧录以及更换国内源等步骤。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
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社区 版权所有