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

    xiaoxiao2021-04-14  40

    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;

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

    转载请注明原文地址: https://ju.6miu.com/read-670541.html

    最新回复(0)