mfc 设置子窗口只打开一遍_MFC 判断子窗体是不是已经打开,避免重复创建
MFC 判断子窗体是否已经打开,避免重复创建
在主窗体中,嵌入一个很多个子窗体,但是,每次只显示一个。
我的做法是,首先在主窗体头文件中定义子窗体对象,然后在单击显示按钮的时候,先判断子窗体是否已经被创建,如果创建了,则ShowWindow(SW_SHOW);将其他已经创建的窗体ShowWindow(SW_HIDE);如果没有创建,则先Create窗体并显示。
在MainDlg.h里面定义:
DeviceParam deviceParam;//设备信息窗体
Version ver;//版本信息窗体
按下按钮判断是否已经存在:
CWnd* pChild;
pChild = deviceParam.GetActiveWindow();
if(NULL != pChild)
{
deviceParam.ShowWindow(SW_SHOW);
}
else
{
deviceParam.Create(DeviceParam::IDD,this);
deviceParam.SetParent(this);
deviceParam.ShowWindow(SW_SHOW);
deviceParam.SetWindowPos(NULL,x,y,deviceParam.Width,deviceParam.Height,0);
}
------解决方案--------------------
在MainDlg.h里面定义:
DeviceParam deviceParam;//设备信息窗体
Version ver;//版本信息窗体
CWnd* pChild;
MainDlg的构造函数里面
pChild=NULL;
在关闭pChild的时候要发送消息给MainDlg窗口把pChild=NULL;
按下按钮判断是否已经存在:
pChild = deviceParam.GetActiveWindow();
if(NULL != pChild)
{
deviceParam.ShowWindow(SW_SHOW);
}
else
{
deviceParam.Create(DeviceParam::IDD,this);
deviceParam.SetParent(this);
deviceParam.ShowWindow(SW_SHOW);
deviceParam.SetWindowPos(NULL,x,y,deviceParam.Width,deviceParam.Height,0);
}
差不多就这样了
------解决方案--------------------
在关闭pChild的时候要发送消息给MainDlg窗口把delete pChild;pChild=NULL;
------解决方案--------------------
成员变量:
CDialog* p[10];
构造函数:
for(int i=0; i<10; i++) p[i] = NULL;
假设有6个选项,每个选项对应一个对话框
switch(k)
{
if(p[k] == NULL){ p[k] = new CDialog(); p[k]->Create(); }
}
Show(k);
单独写Show函数
for(int i=0; i<10; i++)
{
if(p[i] != NULL) p[i]->ShowWindow(SW_HIDE);
}
p[k]->ShowWindow(SW_SHOW);
------解决方案--------------------
引用:
成员变量:
CDialog* p[10];
构造函数:
for(int i=0; i<10; i++) p[i] = NULL;
假设有6个选项,每个选项对应一个对话框
switch(k)
{
if(p[k] == NULL){ p[k] = new CDialog(); p[k]->Create(); }
}
Show(k);
单独写Show函数
********************************************************
******************自己测试通过解决方案*********************
static CDlgResetAlarmInfo *p_DlgResetAlarmInfo = new CDlgResetAlarmInfo;
HWND hWnd = p_DlgResetAlarmInfo->GetSafeHwnd();
if(IsWindow(hWnd))
{
p_DlgResetAlarmInfo->ShowWindow(SW_SHOW);
}
else
{
p_DlgResetAlarmInfo->Create(CDlgResetAlarmInfo::IDD,CWnd::FromHandle(a_pTrend->GetSafeHwnd()));
p_DlgResetAlarmInfo->ShowWindow(SW_SHOW);
}**********************没有问题***************************
原文:http://blog.csdn.net/ghevinn/article/details/29560425
mfc 设置子窗口只打开一遍_MFC 判断子窗体是不是已经打开,避免重复创建相关推荐
- html 判断当前窗口是否是子窗口,C#的MDI窗体判断子窗体是否已经打开
Mdi窗体的设置: IsMdiContainer 设置为true: 子窗体设置: /// /// 显示子窗体 /// /// private void ShowForm(BaseForm _bt) { ...
- Qt中正确设置子窗口关闭方式
在做Qt界面设计时,通过一个按钮打开子窗口,即以new方式创建子窗口,再点击按钮后,调用close关闭子窗口,但子窗口程序还在运行,说明子窗口资源未能得到及时释放.解决的办法是: CDA_Plot = ...
- QT:设置子窗口显示在父窗口的位置(绝对坐标)
QT:设置子窗口显示在父窗口的位置(绝对坐标) 故事背景:最近需要在父窗体修改按钮上弹出二次确认框,之前要么使用 QDesktopWidget,要么使用QCursor,来设置弹窗位置,但是这两种方式不 ...
- Qt关于设置子窗口样式表不生效问题
父窗口A中创建了一个子窗口B,B = new WidgetB(this),this是父窗口A,最后运行程序时出现子窗口B继承了父窗口A的样式,于是在子窗口类中的构造函数里调用 setAutoFillB ...
- mfc 制作不同的文档模板mdi不同的子窗体_对IT项目售前解决方案制作的一些思考...
作者:人月神话,新浪博客同名 简介:多年SOA规划建设,私有云PaaS平台架构设计经验,长期从事一线项目实践 今天准备对于IT项目售前解决方案的制作,对于一个软件企业来说,往往会针对自己的产品线和产品 ...
- mfc 制作不同的文档模板mdi不同的子窗体_制作ACK集群自定义节点镜像的正确姿势...
随着云原生时代的到来,用户应用.业务上云的需求也越来越多,不同的业务场景对容器平台的需求也不尽相同,其中一个非常重要的需求就是使用自定义镜像创建ACK集群. ACK支持用户使用自定义镜像创建Kuber ...
- mfc 制作不同的文档模板mdi不同的子窗体_鹤岗水利渡槽钢模板设计-哈尔滨同顺钢模板...
我们知道圆柱木模板的作用就是通过将木板定型,制作成圆柱形的模具,用来打造混凝土圆柱子,还可以将木板成其他形状制作成异形板.5.做清水混凝土:浇筑物件表面光滑美观,减少墙壁二次抹灰,可直接贴面装饰,减缩 ...
- C#MDI窗体避免重复打开子窗体的问题
在做winform程序的时候,需要用到MDI窗体,在网上看了一些避免子窗体重复打开的问题. 现在我有一个MDI窗体formfather以及两个子窗体form1和form2. 在父窗体上弄两个按钮,点击 ...
- c# winform 防止窗体多次打开
在使用MDI子窗体时,如果仅仅是使用 from.show() 代码,那么我们单击几次菜单,就会打开几个同样的子窗体.可以用这段代码防止这种情况. 首先添加一个函数,这个函数用于检测指定的子窗体是否已经 ...
最新文章
- 选择一个稳定、快速的服务器四大注意事项
- Oracle 11g Release 1 (11.1) PL/SQL_多维 Collection 类型和其异常
- Win32编程day04 学习笔记
- Tmux的安装、使用与配置
- mysql 堆叠查询_SQL 注入方法 - 盲注、报错注入、UNION查询注入与堆叠注入
- python2clock_控制fps的时钟Clock类源码
- 频数直方图的步骤_如何运用QC七大手法和九大步骤分析问题?
- Crnn中文end-to-end识别
- 2018年中国财富管理才真正迎来发展元年
- 远程文件传输工具Filezilla
- 谷歌中国算法比赛解题报告 APAC2017C
- 数值计算(四)——插值法(3)Hermite插值法
- mysql获取某天的开始时间和结束时间
- 关于营销自动化,30个惊人的事实
- 企业文档管理难题,云盒子来解决!
- 给深度学习新手做项目的10个建议
- [数据结构]基于二叉树的家谱系统
- 对你影响最深的计算机书籍是哪一本?
- 华为内部存储转sd卡_华为手机内部存储软件怎么转到sd卡?
- rsa public key not find
热门文章
- 网页Request Headers请求头和Response Headers响应头
- android Calendar使用 年月日时分秒
- 前端项目 开发者环境 和 正式环境 区别
- win7 64 安装sp1补丁提示“客户端没有所需的特权”
- C语言给出任意4个数算24点,讨论24点算法。
- windows彻底删除php,windows如何删除php
- lm358在哪个库里_库里8和aj35哪个好 库里8是安德玛的吗
- beetl 取list下标的问题
- 七、基于比较的排序算法总结
- linux查用户的家目录,详解Linux误删用户家目录的恢复方法