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 ... 
随机推荐
- leetcode461
			public class Solution { public int HammingDistance(int x, int y) { ]; ]; ; ; do { aryA[i] = x % ;//将 ... 
- STS(eclipse)3.7.3新建项目报错:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject,   org.apache.maven.archiver.MavenArchiveConfiguration)
			烦人的版本兼容问题 没有使用sts3.7.3系统内嵌的maven3.3.3,调整为稍高版本的maven3.5.2,懒得修改配置了. 升级eclipse插件吧. Eclipse,Help -> I ... 
- 离线部署 pm2
			1. install nodejs curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash - 2.安装pm ... 
- [C语言]进阶|程序结构
			------------------------------------------------------------------------------------ 全局变量: // main.c ... 
- 面向对象的css   less 和sass
			Css 初始化 reset.css 或者 normalise . Near.css兼容IE6以及现代浏览器. Oocss 也就是面向对象的css 面向对象是将cs ... 
- 基于maven javaweb编程缺少java源文件
			前提:基于maven的javaweb的开发环境,可参考 link 一. https://blog.csdn.net/ldlly0505/article/details/79674826 1.在sour ... 
- 了解各种不同意义上的new
			问题1:请说明new operator 和 operator new的差异? 1.new operator : 一般我们写代码的时候,例如:String *p = new String(&quo ... 
- Zabbix告警脚本-微信
			1.weixin.sh [root@iot-svndata02 bin]# cat weixin.sh #!/bin/bash ###SCRIPT_NAME:weixin.sh### ###send ... 
- 用java开发图形界面项目,如何实现从本地选择图片文件并以二进制流的形式保存到MySQL数据库,并重新现实到面板
- Java15-java语法基础(十四)抽象类
			Java15-java语法基础(十四)抽象类 一.抽象类的作用 三个类都有"执行任务"的方法,分别在这三个类中进行定义,因此需要重复编写代码,降低了程序开发效率,且增加了程序出现错 ... 
