动态创建控件支持事件响应并可保存与读取
2010-08-22 20:47:30 来源:WEB开发网在这个类中,用了三个自定义的控件类成员变量,分别用来存放动态生成的三种不同类型的控件。如果你还想把它保存起来,并能随时读取出来的话,还要加上共公信息中的那些成员变量。另外程序中加入了下面这些常量:
#define IDB_MYCONTROL 0x9000 //自定义按钮的句柄(ID)
程序里设计了一个_globalData 类,使用它的 globalData 对象可以访问里面的全局数据。
#define NUM_CONTROL 128 //数目
//保存配置文件用
const CString APPINFO="appInfo";
const CString CONTROL="Control";
const CString SETTING="Setting";
#define MYBUTTON 1
#define MYEDIT 2
#define MYLABEL 3 ////////////////
//全局数据
////////////////
class _globalData
{
public:
CString appPath;//程序路径
CString appAllPath;//保存文件全路径
bool isDraw;//是否可以拖拽控件
//控件信息
//vector <_myControl> myControl;//考虑使用vector也是可以的
_myControl* myControl[NUM_CONTROL];//这里使用数量受到了限制
int count;//已经建立的控件总数
_globalData()
{
isDraw=false;
//初始控件
for (int i=1;i<=NUM_CONTROL-1;i++) {
globalData.myControl[i]=new _myControl;
}
count=0;
//取得当前路径
char temp[255]= _T("");//保存当前路径的变量
GetModuleFileName(NULL,appPath.GetBufferSetLength(sizeof(temp)),sizeof(temp));//取得程序所在的全目录名
int nPos=appPath.ReverseFind(''); //取得除去文件名字符数后的总长度
appPath=appPath.Left(nPos+1); //截取得到的文件路径长度 最终得到程序所在路径
appPath.ReleaseBuffer();
appAllPath=appPath+"myControl.ini";
}
}extern globalData;
更多精彩
赞助商链接