亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

自己簡單封裝的一個CDialog類實例

2020-01-26 15:07:43
字體:
來源:轉載
供稿:網友

本文實例講述了自己簡單封裝的一個CDialog類實例。分享給大家供大家參考。具體如下:

該代碼比較短小,實現了消息映射。

Dialog.h頭文件如下:

#include <windows.h>class CDialog{public: //一條消息所包含的信息 struct MAP {  UINT Msg;  bool (*pf)(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);  int len;  MAP *pNext; };public: WORD m_wRes;//Dialog資源的ID //頭、尾指針,用來操作消息列表 static MAP *m_pHead; MAP *m_pEnd;public: bool Show(HINSTANCE,HWND); void AddMsg(bool (*fp)(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam),UINT); static bool OnClose(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); static bool OnInit(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); CDialog();private: static INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); void InitMap();};int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow);

Dialog.cpp源文件如下:

#include "Dialog.h"CDialog* pThis;//保存基類指針CDialog::MAP* CDialog::m_pHead = NULL;//窗口過程函數INT_PTR CDialog::DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){ //遍歷消息列表以查找是否有相應的響應函數 CDialog::MAP* pTemp = m_pHead; for(int i = 1;i <= m_pHead->len;++i) {  if(uMsg == pTemp->Msg)  {   pTemp->pf(hwndDlg,uMsg,wParam,lParam);   return FALSE;  }  pTemp = pTemp->pNext; } return FALSE;}//創建消息列表void CDialog::InitMap(){ m_pHead = new MAP; m_pHead->len = 2; m_pHead->Msg = WM_CLOSE; m_pHead->pf = OnClose; MAP *pNew = new MAP; pNew->Msg = WM_INITDIALOG; pNew->pf = OnInit; pNew->pNext = NULL; m_pHead->pNext = pNew; m_pEnd = pNew;}//消息響應函數bool CDialog::OnClose(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam){ EndDialog(hwndDlg,0); return true;}CDialog::CDialog(){ InitMap();}//程序入口函數int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ pThis->Show(hInstance,NULL); return 0;}//顯示Dialogbool CDialog::Show(HINSTANCE hIns,HWND hParent){ DialogBox(hIns,MAKEINTRESOURCE(m_wRes),hParent,DialogProc); return true;}//由子類重寫此函數以在對話框初始化時進行一些操作bool CDialog::OnInit(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam){ return true;}//向消息列表中增加消息void CDialog::AddMsg(bool (*fp)(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam),UINT uMsg){ MAP *pNew = new MAP; pNew->Msg = uMsg; pNew->pf = fp; pNew->pNext = NULL; m_pEnd->pNext = pNew; m_pEnd = pNew; ++m_pHead->len;}

使用時,只需要把這2個文件包含進去,用資源編輯器創建一個Dialog,然后再自己寫一個類,繼承我的CDialog類,把m_wRes這個成員變更設為你創建的Dialog的ID,再extern一個全局變量m_pThis并把this指針賦給它就可以了。

要增加消息響應函數的話,只要在你的類的構造函數里調用AddMsg()這個函數,然后再寫你的消息響應函數就好了。

AddMsg有兩個參數,第一個參數是你的消息響應函數名,第二個參數是你要響應的消息。

示例如下:

#include "MyDlg.h"#include "resource.h"http://定義一個指向CDialog的指針并在下面的構造函數中賦值為thisextern CDialog* pThis;MyDlg App;MyDlg::MyDlg(){ m_wRes = IDD_DIALOG1; pThis = this; AddMsg(OnCommand,WM_COMMAND);}//WM_COMMAND消息響應函數bool MyDlg::OnCommand(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){ MessageBox(hwndDlg,"","",0); return true;}//WM_INITDIALOG消息響應函數bool MyDlg::OnInit(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam){ MessageBox(hwndDlg,"","",0); return true;}

希望本文所述對大家基于MFC的win32程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久久久av| 亚洲最大的免费| 日韩av网站导航| 欧美男插女视频| 国产精品久久久久久久9999| 成人美女av在线直播| 色综合久久中文字幕综合网小说| 美女久久久久久久久久久| 91精品91久久久久久| 91高潮精品免费porn| 久久久久久网址| 狠狠色狠狠色综合日日五| 亚洲国内精品在线| 97视频网站入口| 亚洲性线免费观看视频成熟| 欧美肥老太性生活视频| 亚洲老头同性xxxxx| 精品国产成人在线| 久久中文字幕在线视频| 国产精品va在线播放| 国产va免费精品高清在线观看| 亚洲乱亚洲乱妇无码| 国产精品日韩专区| 国产欧美日韩中文| 国产精品视频公开费视频| 国产成人av在线播放| 国产一区av在线| 96pao国产成视频永久免费| 亚洲福利影片在线| 亚洲精品一二区| 欧美日韩精品国产| 午夜精品久久久久久久久久久久| 欧美影院成年免费版| 国产精品一区二区av影院萌芽| 国产精品99久久久久久久久久久久| 在线视频欧美日韩精品| 日韩精品视频免费在线观看| 国产精欧美一区二区三区| 亚洲第一网站免费视频| 91中文在线视频| 国产亚洲一区精品| 久久五月天色综合| 亚洲老司机av| 欧美性猛交xxxx免费看漫画| 欧美国产亚洲精品久久久8v| 色综合伊人色综合网| 国产精品一区二区女厕厕| 亚洲久久久久久久久久久| 亚洲aⅴ男人的天堂在线观看| 国产精品99久久99久久久二8| 国产精品www| 激情成人在线视频| 日韩成人av网址| 国内精久久久久久久久久人| 欧美在线影院在线视频| 国产精品私拍pans大尺度在线| 亚洲free性xxxx护士白浆| 久久久精品久久久| 中文字幕久热精品在线视频| 中文字幕国产亚洲2019| 一本色道久久88精品综合| 亚洲区中文字幕| 国产成人精品日本亚洲| 中文字幕精品久久久久| 亚洲精品国产精品乱码不99按摩| 亚洲成色777777在线观看影院| 亚洲精品美女视频| 亚洲高清免费观看高清完整版| 国产一区私人高清影院| 国产在线精品播放| 国产精品久久久久久影视| 久久综合五月天| 91精品国产色综合| 欧美日韩国产成人高清视频| 欧美日韩亚洲国产一区| 91av视频在线观看| 国产一区二区久久精品| 亚洲人成在线观| 亚洲字幕在线观看| 亚洲tv在线观看| 亚洲成人xxx| 国产欧美在线视频| 亚洲视频axxx| 狠狠做深爱婷婷久久综合一区| 伊人成人开心激情综合网| 色婷婷亚洲mv天堂mv在影片| 亚洲男人的天堂在线播放| 最好看的2019年中文视频| 国产精品美女av| 中文字幕在线看视频国产欧美在线看完整| 国产成人aa精品一区在线播放| 国产z一区二区三区| 国产成人精品视| 色噜噜狠狠色综合网图区| 欧美黑人一级爽快片淫片高清| 98精品国产高清在线xxxx天堂| 日韩在线视频观看| 国产美女被下药99| 欧美肥婆姓交大片| 国产午夜精品一区二区三区| 欧美性xxxx在线播放| 亚洲а∨天堂久久精品9966| 欧美视频在线观看免费| 色婷婷综合久久久久| 午夜精品三级视频福利| 亚洲视频视频在线| 全亚洲最色的网站在线观看| 亚洲精品视频二区| 久久91精品国产| 亚洲色图av在线| 精品电影在线观看| 国产精品一久久香蕉国产线看观看| 日韩视频在线一区| 国产成人精品视频| 欧美精品久久久久久久免费观看| 国产精品久久久久久久久久| 97在线视频精品| 亚洲xxxx18| 国产亚洲欧洲高清| 亚洲高清免费观看高清完整版| 91在线免费视频| 日韩专区在线播放| 色哟哟入口国产精品| 成人激情视频在线观看| 国模吧一区二区三区| 91av在线免费观看视频| 国产91精品网站| 日韩电影中文字幕| 精品国产1区2区| 欧美高清videos高潮hd| 日韩在线视频中文字幕| 国内精品中文字幕| 中文字幕国产亚洲2019| 久久亚洲综合国产精品99麻豆精品福利| 久久久亚洲欧洲日产国码aⅴ| 亚洲一区亚洲二区| 久久久久久999| 久久精品一偷一偷国产| 国内精品久久久| 国产精品igao视频| 色伦专区97中文字幕| 久久国产天堂福利天堂| 色青青草原桃花久久综合| 国产精品久久久久久久久久三级| 日本欧美一级片| 91视频8mav| 庆余年2免费日韩剧观看大牛| 亚洲女人天堂成人av在线| 日韩av有码在线| 亚洲天堂影视av| 亚洲成人精品视频在线观看| 亚洲аv电影天堂网| 自拍偷拍亚洲精品| 亚洲免费视频网站| 国产一区二区视频在线观看| 海角国产乱辈乱精品视频| 欧美丰满片xxx777| 国产亚洲在线播放| 日韩中文字幕网址| 国产999视频| 日韩成人性视频| 精品五月天久久| 欧美与欧洲交xxxx免费观看| 国产精品久久久久久久久影视|