win32SDK下仿MFC封裝窗口類(QWnd)和應(yīng)用程序類QWndApp
指針類型:PWNDMS
消息結(jié)構(gòu)_tagMessageMap
枚舉類型:SingStyle
共用體:FuntionStyle
DECLARE_MESSAGE_MAP
BEGIN_MESSAGE_MAP
END_MESSAGE_MAP
定義窗口的各種消息宏
應(yīng)用程序QWinApp類:
窗口基類QWnd
應(yīng)用
1.定義函數(shù)指針類型:PWNDMS
2.定義消息結(jié)構(gòu)_tagMessageMap
3.定義函數(shù)樣式的枚舉類型:SingStyle
4.定義函數(shù)樣式的共用體:FuntionStyle
和上面的函數(shù)樣式一一對(duì)應(yīng)
5.定義動(dòng)態(tài)創(chuàng)建消息映射宏:DECLARE_MESSAGE_MAP
函數(shù)說(shuō)明:
????GetMessageMap:????獲得當(dāng)前類中的消息數(shù)組首地址
????GetThisMessageMap:????在這函數(shù)中創(chuàng)建當(dāng)前類的消息結(jié)構(gòu)數(shù)組
????FindMessageMap:????在當(dāng)前類中查找指定的消息,找到返回這個(gè)消息,沒(méi)找到返回父類的FindMessageMap繼續(xù)查找,直到找到或?yàn)镹ULL
6.定義開(kāi)始消息映射宏:BEGIN_MESSAGE_MAP
(對(duì)上面聲明的函數(shù)具體的實(shí)現(xiàn))
typedef thisClass ThisClass;這是重新定義傳進(jìn)來(lái)的本類類名
用于定義窗口各種消息宏的本類類名,在傳函數(shù)名的時(shí)候前面就不耍類名的作用域
如:
ON_WM_COMMAND(USERID_BUTTON, OnUserBtnClick)
函數(shù)OnUserBtnClick,如果沒(méi)有重新定義本類類名就要寫成
ON_WM_COMMAND(USERID_BUTTON, MyMainWnd::OnUserBtnClick)
7.定義消息結(jié)束宏:END_MESSAGE_MAP
在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之間填充各種窗口消息
如下實(shí)例:
8.定義窗口的各種消息宏
以上窗口常用消息宏的定義,根據(jù)需要定義各種各樣的消息宏和消息樣式
這里面的ThisClass就是上面重新定義的本類類名
typedef thisClass ThisClass;
9.應(yīng)用程序QWinApp類:
QWinApp.h
QWinApp.cpp
10.窗口基類QWnd
QWnd.h
QWnd.cpp
在AfxQWindowProc函數(shù)中返回指定類型的函數(shù)指針
11.應(yīng)用
創(chuàng)建自己的應(yīng)用程序類:MyWinApp繼承QWinApp;
創(chuàng)建自己的窗口類:MyMainWnd繼承QWnd;
在.cpp文件中實(shí)現(xiàn)