自己简单封装的一个CDialog类实例

自己简单封装的一个CDialog类实例

这篇文章主要介绍了自己简单封装的一个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程序有所帮助。

自己简单封装的一个CDialog类实例