MFC 不同窗体之间变量调用
应用场景:
(1)主对话框包含一个Tab控件,Tab控件用来切换显示若干子对话框,子对话框类的成员需要互相访问。
(2)或者程序中包含多个类,各类之间需要互相访问。
方法1-定义指针成员变量:
详情参见文章:MFC一个类访问另一个类成员对象的成员变量值 - 路人浅笑 - 博客园 https://www.cnblogs.com/perfy/p/5329630.html
方法2-定义全局指针变量:
与方法1类似,只不过定义的指针变量在类的实现cpp文件中,是全局变量。
//TeachDlg.h class TeachDlg
{
int number;
void Lesson();
}
//TeachDlg.cpp
#include "TeachDlg.h"
TeachDlg * g_DlgTeach;
void TeachDlg::Lesson()
{
number = 1;
}
这样就可以省去在类外初始化静态成员指针这一步,只需要在类的构造函数中或者对话框初始化函数中对指针进行赋值。如下:
//TeachDlg.cpp
BOOL TeachDlg::OnInitDialog()
{
CDialogEx::OnInitDialog(); // TODO: Add extra initialization here
g_DlgTeach = this;
...
}
最后在其他类中调用本类的函数时,需要在其实现cpp文件中声明这个全局指针即可。
//Student.cpp
#include "TeachDlg.h" extern TeachDlg *g_DlgTeach; Student::Study()
{
g_DlgTeach->Lesson();
}
注意:
如果没有对指针进行初始化, 即没有执行 g_DlgTeach = this; 这句话,
就调用指针来访问TeachDlg类的成员函数,是不会报错的,但访问成员变量就会报错。

MFC 不同窗体之间变量调用的更多相关文章
- 多窗体之间方法调用 z
C# Code: /// <summary> /// 主窗体接口 /// </summary> public interface IMdiParent{ void Pare ...
- C# 多窗体之间方法调用
看似一个简单的功能需求,其实很多初学者处理不好的,很多朋友会这么写: //父窗体是是frmParent,子窗体是frmChildA //在父窗体中打开子窗体 frmChildA child = new ...
- Delphi窗体之间互相调用的简单问题
问题是这样的,我的程序主窗口Form1上面有一个数据连接(ADOCONNECTION1)和ADOQUERY,然后还有一些数据感知组件用于浏览用的,我打算点击From1中的一个“修改数据”按钮,就弹出F ...
- Iframe之间及iframe与父窗体之间值的传递
方法一:ScriptManager.RegisterClientScriptBlock(this,typeof(Page), "NoInformation", "wind ...
- ESP8266 LUA脚本语言开发: 准备工作-LUA文件加载与变量调用
前言 这节说一下多个文件调用 多个文件之间变量调用 准备两个文件 init.lua other.lua 开始 模块默认一开始调用的是init.lua 咱让init.lua调用 other.lua 很简 ...
- 线程的函数中调用MFC对话框类的变量
线程的函数中调用MFC对话框类的变量多线程传输文件的对话框 现在想要在对话框上添加一个进度条 为进度条映射变量m_progress这就需要在传输一段文件后就更新m_progress的值使进度条前进 也 ...
- java基础:父类与子类之间变量和方法的调用
1)父类构造函数 java中当调用某个类的构造方法的时候,系统总会调用父类的非静态初始化块进行初始化,这个调用是隐式的,而且父类的静态初始化代码 块总是会被执行,接着调用父类的一个或者多个构造器执行初 ...
- VS建立可供外部调用的MFC类DLL,C#调用MFC调用
建立MFC DLL工程.一般选共享MFC库 关键是在你生成的CPP中,添加外部调用的接口 如下,意思是将这个函数对外公开. 如果你希望对外提供类,就把这个方法做成工厂. 如果你希望对外提供MFC的窗体 ...
- MFC 可编辑文本框,MFC控件关联变量总结
Edit Control控件,默认状态下,按回车会调用OnOK()关闭窗体.解决此bug可以,类视图中单击CMFCApplication3Dlg,下方重写OnOK(),注释掉其中的代码即可. Edit ...
随机推荐
- halcon分离路径名称
用haclon程序将目录名分离的算法. ParseFileName:='F:/D705/4-20/缺陷/81.bmp' parse_filename(ParseFileName, BaseName, ...
- CPU与内存互联的架构演变
随着计算机中CPU核数目的增加,传统的UMA(unifonn memory access)架构由于对关键硬件(如中央内存控制器)的竞争加剧出现了性能上的瓶颈,即扩展性不强.而NUMA架构则以其良好的可 ...
- JEECG-Swagger UI的使用说明
一.代码生成 (此步骤为代码生成器的使用,如不清楚请查阅相关文档视频) 1.进入菜单[在线开发]-->[Online表单开发],选中一张单表/主表,点击代码生成按钮. 2.弹出页面中填写代码生成 ...
- sass的基本使用
使用sass的前提是安装Ruby,如果是Mac系统,那么免去安装,Windows系统需要自行安装https://www.sass.hk/install/.当安装好以后,直接执行安装sass命令:gem ...
- git 提交丢失Warning, you are leaving 2 commits behind,
早上在自己的一个版本代码上编辑,提交commint,但是checkout到其他分支再checkout回来发现该的东西不见了, 幸好terminal还没有关掉,回看日志: Warning: you ar ...
- h5-audio/video标签
音频/视频 基础用法 属性 事件 audio元素和video元素 <audio id="audio" src="./成都.mp3"></aud ...
- IDEA 工具从Json自动生成JavaBean
1.先安装GsonFormat插件:File-->Setting-->Plugins-->GsonFormat-->OK 2.new 一个新的Class空文件,然后 Alt+I ...
- iOS app审核被拒申诉
提交申诉理由之后不需要点击“提交审核”按钮,否则按照重新提交算,需要重新排队,且申诉会不起作用.
- cdnbest区域里快速配置全部节点的缓存
1.在cdn后台区域中自定义区域配置中添加下面代码,具体参数也可自行调整,代码解释在文档最下面有 <!--#start --> <config> <lang>zh_ ...
- 第一章 C++语言入门
标准数据类型 C++语言提供了丰富的数据类型,如整数类型.实数类型(浮点数).字符类型等.每种数据类型均有均值范围,Dev-C++(4.9.9.2)是Windows平台 ...