MFC单文档之利用全局变量一次设置多个对话框的串口通讯

1、 引言

好多的对话框中建立了各自的串口控件,这样虽然稳定但是每次打开一个对话框都要重新连接串口,于是乎想到怎么用一个串口控件实现多个对话框通信,网上有方法云:在所有对话框外定义这个串口类的对象(比如在主窗口中),然后其它对话框要使用这个串口类对象, 就传一个指针到对话框中, 就可以使用了。麻烦,后来一想,其实只需要建立一个全局变量对应串口号就行了。

2、添加一个没有基类的新类, 设类名起为CMyPublicData, 可称之为公用类。

单击“Insert”菜单下的“New Class”命令, 选择“Class type”为“Generic Class”, 在“Name”栏中填入类名“CMyPublicData”, 单击“OK”, 则新类建立完毕。

3、创建全局的变量与全局函数

实际上是定义CMyPublicData 类的public 属性的成员变量和成员函数。
CMyPublicData.h 的内容:

class CMyPublicData
{public:
CMyPublicData(void);
public:
virtual ~CMyPublicData(void);
public:
int Public_x;//自定义了一个int 型全局变量Public_x
void Public_f();//自定义了一个返回值类型void 无任何参数的全局函数Public_f
};
extern CMyPublicData MyPublicData; //这里声明了自定义全局对象

CMyPublicData.cpp 的内容:

#include "StdAfx.h"
#include "CMyPublicData.h"
CMyPublicData::CMyPublicData(void)
{}
CMyPublicData MyPublicData; //实例化全局对象
CMyPublicData::~CMyPublicData(void)
{}
void CMyPublicData::Public_f()//函数的定义
{//此处可增加函数完成实际功能的语句}

4、包含公用类的头文件, 使各个类都能访问它

CMyPublicData 的头文件应包含在应用程序类的头文件中,这样在其它类中引用CMyPublicData 类时就不需要再包含了。若应用程序类的头文件为Example.h, 其样式如下:

#include "CmyPublicData.h" //包含公用类头文件

5、使用全局变量和全局函数

可在整个工程中, 利用MyPublicData.Public_x 形式使用变量,可多次赋值, 多次调用, 利用MyPublicData.Public_f()形式调用函数。可实现了全局变量和全局函数。
如在视图的某函数中访问变量Public_x 和函数Public_f()。
void CTestView::xxx(){
MyPublicData.Public_x = 0; //访问变量Public_x
MyPublicData.Public_f(); //访问函数Public_f()
??}
在其它类中访问Public_x 和Public_f()的方法与此相同。

6、替代其余对话框中串口设置部分

串口设置对话框中:

CString portnums;
GetDlgItemText(IDC_CARDNUM, portnums);
int flag = _ttoi(portnums);//将其转化为数值类型
MyPublicData.Public_com = flag;

其它对话框中:

    int flag = MyPublicData.Public_com;

这样就只要设置一次就好了,

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值