好多的对话框中建立了各自的串口控件,这样虽然稳定但是每次打开一个对话框都要重新连接串口,于是乎想到怎么用一个串口控件实现多个对话框通信,网上有方法云:在所有对话框外定义这个串口类的对象(比如在主窗口中),然后其它对话框要使用这个串口类对象, 就传一个指针到对话框中, 就可以使用了。麻烦,后来一想,其实只需要建立一个全局变量对应串口号就行了。
单击“Insert”菜单下的“New Class”命令, 选择“Class type”为“Generic Class”, 在“Name”栏中填入类名“CMyPublicData”, 单击“OK”, 则新类建立完毕。
实际上是定义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()//函数的定义 {//此处可增加函数完成实际功能的语句}CMyPublicData 的头文件应包含在应用程序类的头文件中,这样在其它类中引用CMyPublicData 类时就不需要再包含了。若应用程序类的头文件为Example.h, 其样式如下:
#include "CmyPublicData.h" //包含公用类头文件可在整个工程中, 利用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()的方法与此相同。
串口设置对话框中:
CString portnums; GetDlgItemText(IDC_CARDNUM, portnums); int flag = _ttoi(portnums);//将其转化为数值类型 MyPublicData.Public_com = flag;其它对话框中:
int flag = MyPublicData.Public_com;这样就只要设置一次就好了,