这篇文章主要介绍了自己简单封装的一个cddialog(对话方块)类,实例分析了自定义封装cddialog(对话方块)类的相关技巧,比较简单易懂,需要的朋友可以参考下
本文实例讲述了自己简单封装的一个cddialog(对话方块)类实例。分享给大家供大家参考。具体如下:
该代码比较短小,实现了消息映射。
对话框h。头文件如下:
#包括windows.h
类激光唱片对话框
{
观众:
//一条消息所包含的信息
结构图(结构图)
{
uint消息
bool (*pf)(HWND hwndDlg、uint umsg、WPARAM wParam、lparam lparam
内部低输入联网(low-entry networking的缩写)
map * pnext
}:
观众:
字m _ wres//对话框资源的身份证明号
//头~我爱你~尾指针,用来操作消息列表
静态贴图* m _ phead
地图* m _ pend
观众:
弯曲件展示(hinstance,hwnd);
请参阅add msg(bool(* FP)(hwnddlg,uint umsg,WPARAM wParam,LPARAM),uint);
静态bool OnClose(HWND hwndDlg、uint umsg、WPARAM wParam、LPAR am);
静态布林值(hwnd hwnddlg、uint umsg、WPARAM wParam、lparam lparam
CD dialog();
私人的:
静态整数指针回调对话框处理器(HWND hwndDlg、uint umsg、WPARAM wParam、LPAR am);
void初始化映射();
}:
int WINAPI WinMain(HINSTANCE,hinstance hprevinstance,LPSTR lpCmdLine,int ncmdshow);
对话.卡片打印处理机(Card Print Processor的缩写)源文件如下:
#包括" Dialog.h "
cdialog * pt this//保存基类指针
CD dialog:map * CD dialog:m _ phead=null;
//窗口过程函数
int _ ptr CD dialog:dialog proc(hwnddlg、uint umsg、WPARAM wParam、LPARAM)
{
//遍历消息列表以查找是否有相应的响应函数
CD dialog:map * ptmp=m _ phead;
for(int I=1);S7-1200可编程控制器:(一)
{
if(umg==ptmp-msg)
{
ptmp-pf(hwnddlg、umg、wParam、lparam
返回错误的
}
ptmp=ptmp-pnext;
}
返回错误的
}
//创建消息列表
请参阅cddialog:初始化映射()
{
m_pHead=新贴图:
S7-1200可编程控制器:
m _ phead-msg=WM _ close;
m_pHead-pf=无糖;
MAP *pNew=新地图;
pnew-msg=WM _ init对话框;
pNew-pf=肌钙蛋白;
pnew-pnext=null;
m _ phead-pnext=pnew;
m _ pend=pnew
}
//消息响应函数
bool CD dialog:on clos(hwnd hwnddlg、uint umsg、WPARAM wParam、LPARAM)
{
结束对话(hwndDlg,0);
返回真实的
}
cddialog:cddialog()
{
init map();
}
//程序入口函数
int winapi winmain(hin instance,hinstance hprevinstance,LPSTR lpCmdLine,int nCmdShow)
{
pt this节目(0,0);
返回0;
}
//显示对话方块
bool CD dialog:show(hintance hins,HWND hParent)
{
DialogBox(hIns,make intruser ce(m _ wres),hParent,dialog proc);
返回真实的
}
//由子类重写此函数以在对话框初始化时进行一些操作
bool CD dialog:on init(hwnd hwnddlg,uint umsg,WPARAM wParam,LPARAM)
{
返回真实的
}
//向消息列表中增加消息
见CD dialog:addmsg(bool(* FP)(hwnd hwnddlg,uint rsg,WPARAM wParam,LPARAM),uint rsg)
{
MAP *pNew=新地图;
pnew-msg=umg;
pnew pf=FP
pnew-pnext=null;
m _ pend-pnext=pnew;
m _ pend=pnew
-伊甸园字幕组=-翻译:
}
使用时,只需要把这2个文件包含进去,用资源编辑器创建一个对话,然后再自己写一个类,继承我的cddialog(对话方块)类,把m_wRes(消歧义)这个成员变更设为你创建的对话方块的身份证明号,再外部的一个全局变量m _ pThis(消歧义)并把这一点指针赋给它就可以了。
要增加消息响应函数的话,只要在你的类的构造函数里调用AddMsg()这个函数,然后再写你的消息响应函数就好了。
AddMsg文件有两个参数,第一个参数是你的消息响应函数名,第二个参数是你要响应的消息。
示例如下:
#包括MyDlg.h
#包括资源. h
//定义一个指向cddialog(对话方块)的指针并在下面的构造函数中赋值为这一点
外部cdialog *这
MyDlg应用程序;
MyDlg:MyDlg()
{
m_wRes=IDD_DIALOG1:
pThis=此;
添加消息(onccommand,WM_COMMAND):
}
//WM_COMMAND消息响应函数
bool mydlg:oncommand(hwnd hwnddlg、uint umsg、WPARAM wParam、LPARAM)
{
邮箱(hwndDlg,""、" 0 ";
返回真实的
}
//WM _ init dialog-WM _ init对话方块消息响应函数
bool mydlg:oninitit(hwnddlg,uint umsg,WPARAM wParam,LPARAM)
{
邮箱(hwndDlg,""、" 0 ";
返回true
}
希望本文对大家基于MFC设计win32程序有所帮助。