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

来源:互联网 发布:晋中市网络平台登录 编辑:程序博客网 时间:2024/05/17 08:16

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_xvoid 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;

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

0 0
原创粉丝点击