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

首頁 > 編程 > C > 正文

基于對話框程序中讓對話框捕獲WM_KEYDOWN消息的實現(xiàn)方法

2020-01-26 16:17:19
字體:
供稿:網(wǎng)友

在對話框程序中,我們經(jīng)常是利用對話框上的子控件進行命令響應(yīng)來處理一些事件。如果我們想要讓對話框(子控件的父窗口)類來響應(yīng)我們的按鍵消息,我們可以通過ClassWizard對WM_KEYDOWN消息進行響應(yīng),當程序運行后,我們按下鍵盤上的按鍵,但對話框不會有任何的反應(yīng)。這是因為在對話框程序中,某些特定的消息,例如按鍵消息,它們被Windows內(nèi)部的對話框過程處理了(即在基類中完成了處理,有興趣的讀者可以查看MFC的源代碼),或者被發(fā)送給子控件進行處理,所以我們在對話框類中就捕獲不到按鍵的消息了。

既然我們知道了這個處理的過程,我們就可以找到底層處理按鍵消息的函數(shù),然后在子類中重載它,就可以在對話框程序中處理按鍵消息了。在MFC中,是利用BOOL ProcessMessageFilter(int code, LPMSG lpMsg)這個虛函數(shù)來過濾或響應(yīng)菜單和對話框的特定Windows消息。下面我們通過程序給大家演示基于對話框的應(yīng)用程序?qū)M_KEYDOWN消息的捕獲。

第一步:新建一個工程,選擇MFC AppWizard (exe),工程名為WinSun,點擊ok,進入下一步,選擇Dialog based,點擊Finish。

第二步:在CWinSunApp類上點擊右鍵,選擇Add Member Varialbe,增加一個類型為HWND,變量名m_hwndDlg的public的變量。

代碼如下:

復(fù)制代碼 代碼如下:

WinSun.h

class CWinSunApp : public CWinApp

{

public:

       HWND m_hwndDlg;

       CWinSunApp();

 

// Overrides

       // ClassWizard generated virtual function overrides

       //{{AFX_VIRTUAL(CWinSunApp)

       public:

       virtual BOOL InitInstance();

       //}}AFX_VIRTUAL

 

// Implementation

 

       //{{AFX_MSG(CWinSunApp)

              // NOTE - the ClassWizard will add and remove member functions here.

              //    DO NOT EDIT what you see in these blocks of generated code !

       //}}AFX_MSG

       DECLARE_MESSAGE_MAP()

};


第三步:在WinSun.cpp(CWinSunApp類)文件中的InitInstance()函數(shù)中添加如下代碼:
復(fù)制代碼 代碼如下:

WinSun.cpp

BOOL CWinSunApp::InitInstance()

{

       AfxEnableControlContainer();

 

       // Standard initialization

       // If you are not using these features and wish to reduce the size

       //  of your final executable, you should remove from the following

       //  the specific initialization routines you do not need.

 

#ifdef _AFXDLL

       Enable3dControls();                     // Call this when using MFC in a shared DLL

#else

       Enable3dControlsStatic();      // Call this when linking to MFC statically

#endif

 

       CWinSunDlg dlg;

       m_pMainWnd = &dlg;

       int nResponse = dlg.DoModal();

       if (nResponse == IDOK)

       {

              // TODO: Place code here to handle when the dialog is

              //  dismissed with OK

       }

       else if (nResponse == IDCANCEL)

       {

              // TODO: Place code here to handle when the dialog is

              //  dismissed with Cancel

       }

 

       // Since the dialog has been closed, return FALSE so that we exit the

       //  application, rather than start the application's message pump.

       m_hwndDlg=NULL;

       return FALSE;

}


第四步:在CWinSunApp類上點擊右鍵,選擇Add Virtual Function,在左邊一欄里,選擇ProcessMessageFilter,在右邊按鈕上選擇Add and Edit,然后加入以下代碼:
復(fù)制代碼 代碼如下:

WinSun.cpp

BOOL CWinSunApp::ProcessMessageFilter(int code, LPMSG lpMsg)

{

       // TODO: Add your specialized code here and/or call the base class

       if(m_hwndDlg!=NULL)

       {

              //判斷消息,如果消息是從對話框發(fā)出的或者其子控件發(fā)出的,我們就進行處理。sunxin

              if((lpMsg->hwnd==m_hwndDlg) || ::IsChild(m_hwndDlg,lpMsg->hwnd))

              {

                     //如果消息是WM_KEYDOWN,我們就彈出一個消息框。sunxin

                     if(lpMsg->message==WM_KEYDOWN)

                     {

                            AfxMessageBox("捕獲WM_KEYDOWN消息成功!");

                     }

              }

       }

       return CWinApp::ProcessMessageFilter(code, lpMsg);

}


第五步:在WinSunDlg.cpp(CWinSunDlg類)中的OnInitialDialog()函數(shù)中加入以下代碼:
復(fù)制代碼 代碼如下:

WinSunDlg.cpp

BOOL CWinSunDlg::OnInitDialog()

{

       CDialog::OnInitDialog();

 

       // Add "About..." menu item to system menu.

 

       // IDM_ABOUTBOX must be in the system command range.

       ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

       ASSERT(IDM_ABOUTBOX < 0xF000);

 

       CMenu* pSysMenu = GetSystemMenu(FALSE);

       if (pSysMenu != NULL)

       {

              CString strAboutMenu;

              strAboutMenu.LoadString(IDS_ABOUTBOX);

              if (!strAboutMenu.IsEmpty())

              {

                     pSysMenu->AppendMenu(MF_SEPARATOR);

                     pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

              }

       }

 

       // Set the icon for this dialog.  The framework does this automatically

       //  when the application's main window is not a dialog

       SetIcon(m_hIcon, TRUE);                  // Set big icon

       SetIcon(m_hIcon, FALSE);          // Set small icon

     

       // TODO: Add extra initialization here

//將對話框的句柄傳遞到CWinSunApp類中。sunxin

       ((CWinSunApp*)AfxGetApp())->m_hwndDlg=m_hWnd;

       return TRUE;  // return TRUE  unless you set the focus to a control

}


第六步:在對話框窗口銷毀后,將CWinSunApp類中的變量m_hwndDlg置為NULL,為此我們在CWinSunDlg類上點擊右鍵,選擇Add Windows Message Handler,在左邊一欄中選擇WM_DESTROY,在右邊按鈕上選擇Add and Edit,然后加入以下代碼:
復(fù)制代碼 代碼如下:

WinSunDlg.cpp

void CWinSunDlg::OnDestroy()

{

       CDialog::OnDestroy();

     

       // TODO: Add your message handler code here

       ((CWinSunApp*)AfxGetApp())->m_hwndDlg=NULL;

}


至此,我們的工作就做完了,現(xiàn)在我們可以按Ctrl+F5運行程序,看到我們想要的結(jié)果。

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

圖片精選

成人高潮a毛片免费观看网站| 思热99re视热频这里只精品| 欧美性猛交xxxx| 亚洲美女视频在线免费观看| 欧美激情一二三区| 国产又粗又猛又爽又黄的视频四季| 在线亚洲午夜片av大片| 成人午夜福利视频| 青青草国产精品一区二区| 午夜精品短视频| 国产精品一级黄| 波多野结衣黄色网址| 成人一区在线看| 狠狠干夜夜草| 毛片在线导航| 国产精品久久久久久亚洲色| 亚洲免费伊人电影在线观看av| 日韩视频在线直播| 激情小说亚洲色图| 91丝袜美腿高跟国产极品老师| 久久先锋资源网| 麻豆精品一区二区| 91精品国产欧美一区二区18| 国产成人午夜精品影院观看视频| 一区二区三区久久精品| 国产精品中文久久久久久久| 日韩一级片av| 五月天网站亚洲| 一区二区三区精品国产| 91原创在线视频| 6080午夜伦理| av大片免费在线观看| 夜夜躁日日躁狠狠久久88av| 又色又爽又高潮免费视频国产| 欧美三级三级三级| 日韩精品专区在线影院观看| 日韩高清一级片| 成人午夜天堂| 韩国三级hd中文字幕有哪些| 日韩激情一区二区三区| 亚洲欧美一区二区原创| 国产精品av一区二区| 最新国产拍偷乱拍精品| 日韩深夜福利| 香港三级韩国三级日本三级| 欧美成人官网二区| 欧美综合精品| 亚洲欧美一区二区三区国产精品| 视频一区二区中文字幕| 91麻豆国产在线| 免费男同深夜夜行网站| 国产精品久久亚洲不卡| **孕交吃奶水一级毛片| 完全免费av在线播放| 免费观看30秒视频久久| 欧美在线视频第一页| 黄色av免费网站| 久久综合中文字幕| 免费99视频| 白嫩白嫩国产精品| 欧美成人性生活| 日韩午夜中文字幕| 国产免费黄色大片| 天天做天天摸天天爽国产一区| 国产一区二区精品久久91| 欧洲一区av| av免费中文字幕| 欧美日本黄色| 中文字幕av免费在线观看| 国产精品美女久久久久久久久| 二区在线视频| 日本免费在线播放| 国产综合久久久久久久久久久久| 五月婷婷在线播放| 先锋影音av中文资源| 欧洲一区精品| 男人天堂视频在线观看| 一个人看的www视频在线免费观看| 精品久久久久久久久久久久久久久| 欧美三级华人主播| 欧美黑人又粗又大又爽免费| 日韩欧美美女在线观看| 在线免费观看不卡av| 啊啊啊久久久| 清纯唯美亚洲综合一区| 香蕉视频久久久| 中文有码久久| 操操操日日日| 青娱乐精品在线| 国产成人一区| 欧美诱惑福利视频| 日韩精品极品视频免费观看| 久久综合狠狠综合久久激情| 亚洲国产精品久久久久婷婷老年| 午夜精品免费在线| 99re66热这里只有精品3直播| av在线亚洲色图| 原创真实夫妻啪啪av| 欧美主播福利视频| 日韩欧美国产综合在线一区二区三区| www黄com| 青青视频免费在线观看| 97人妻人人揉人人躁人人| 波多野结衣在线网址| 懂色av一区二区三区免费观看| 羞羞视频在线观看免费| 亚洲国产电影| 在线黄色av| 亚洲一二三区不卡| 中文字幕亚洲精品乱码| 欧美精品激情在线观看| 野花社区视频在线观看| 精品午夜久久福利影院| 亚洲夂夂婷婷色拍ww47| 欧美第一页在线| 欧美精品在线观看一区二区| 色妞ww精品视频7777| 性生活免费在线观看| 国产成人一区二区| 欧美少妇bbb| 欧美少妇一级片| 激情亚洲影院在线观看| 成人av无码一区二区三区| 一区视频免费观看| 日韩免费电影一区二区三区| 97精品久久久久中文字幕| 一区二区三区日韩欧美精品| 精品无码人妻一区二区三| 99re久久精品国产| 欧美性色综合网| 亚洲国产视频一区二区| 日本一区二区三区在线播放| 国产午夜大地久久| 中文字幕精品在线视频| 国产高清视频免费观看| 中文字幕一区二区三区手机版| 欧美裸身视频免费观看| 日本久久精品| 秋霞在线视频| 91久久偷偷做嫩草影院| 欧美人与物videos另类xxxxx| 久久久久久网| 在线天堂资源www在线污| 先锋资源一区| 色视频一区二区| 午夜激情一区| 97超碰在线免费观看| 日本国产一级片| 97品白浆高清久久久久久| 8mav模特福利视频在线观看| 天天撸天天射| 欧洲有码在线视频| 日日骚av一区| 在线观看av的网站| 91精品久久久久久久蜜月| 四季av一区二区| 日韩网红少妇无码视频香港| 日韩视频在线观看视频| 伦理中文字幕亚洲| 国产 欧美 日韩 在线| 国产精品美女视频网站| 成人免费精品视频| 久久精品色综合| 国产精品外国| 国产在亚洲线视频观看| 中文字幕 日韩 欧美| 国产精品理伦片| 一二三四在线视频观看社区| 日本中文字幕高清视频| 91久久精品视频| 国产欧美熟妇另类久久久| av不卡中文字幕| 三级黄色视屏| 国产精品一二三四五区| 久久久精品免费视频| 国内精品二区| 日本熟伦人妇xxxx| 日韩精品在线免费看| 国产亚洲精品久久久网站好莱| 交换做爰国语对白| 亚洲十八**毛片| 成人免费淫片95视频观看网站| 中文字幕一区二区人妻电影| 国产在线观看黄| 久久99国产精品99久久| 亚洲调教视频在线观看| 四虎激情影院| 五月天激情在线| 美女福利网站视频在线观看| 欧美黄色片在线观看| 男人天堂手机在线视频| 福利视频在线播放| 三级电影一区| 少妇被躁爽到高潮无码文| 国产porn视频| 久久aⅴ国产欧美74aaa| 久久电影国产免费久久电影| 日韩一区二区欧美| 欧美在线免费观看视频| 日韩精品视频一区二区| 久久综合精品国产一区二区三区| 亚洲欧美日韩另类| 91麻豆精品国产91久久久更新时间| ㊣最新国产の精品bt伙计久久| 中文字幕精品—区二区四季| 亚洲一区二区偷拍精品| 亚洲精品无码一区二区| 中文成人激情娱乐网| 亚洲精品一区二区三区蜜桃久| 乱妇乱女熟妇熟女网站| 97se国产在线视频| 国产性猛交╳xxx乱大交| wwwxxxx欧美| 亚洲高清免费一级二级三级| 日韩欧美亚洲在线| 97se亚洲国产综合自在线不卡| 嫩草影院懂你的影院| 欧美亚洲一二三区| 免费在线成人av| 日韩精品乱码免费| 黄动漫在线看| 亚洲国产日韩欧美在线| 欧美电影在线观看网站| 在线日韩一区| 日韩欧美亚洲日产国| 午夜影视日本亚洲欧洲精品| 欧美三级电影网址| 欧美色视频一区二区三区在线观看| juliaann成人作品在线看| 亚洲欧洲av色图| 欧美一级片免费| 欧美亚韩一区二区三区| 国产 日韩 欧美 综合 一区| 在线看黄色av| 亚洲一区在线观看免费| 成人涩涩小片视频日本| 国产v综合ⅴ日韩v欧美大片| 亚洲天堂电影网| 久久偷看各类wc女厕嘘嘘偷窃| 精品久久97| 久久综合亚洲社区| 欧美日韩一区综合| 国产 欧美在线| 久久亚洲不卡| 波多野结衣家庭教师| 国产精品原创视频| 亚洲美女久久精品| 性高潮免费视频| 又黄又色的网站| 欧美日韩人人澡狠狠躁视频| 国产噜噜噜噜噜久久久久久久久| 欧美精品日韩一区| 国产精品九九九| 国产成人精品一区二三区四区五区| 日韩亚洲国产精品| 国产精品香蕉在线观看| 欧美韩日一区二区三区| 国内在线免费视频| 中文字幕av一区二区三区佐山爱| 国产精品av在线播放| 性孕妇free特大另类| 卡一卡二卡三在线观看| 自由日本语亚洲人高潮| 亚洲欧美另类小说| 人人网欧美视频| 成人免费观看在线观看| 中文字幕第7页| 久久久久久婷婷| 思思久久精品视频| 色免费在线观看| 激情网址大全| 欧美一级搡bbbb搡bbbb| 欧美aⅴ99久久黑人专区| 9久草视频在线视频精品| 欧美日本韩国一区二区三区视频| 国产精品蜜月aⅴ在线| 激情小说一区| 一级片aaaa| 亚洲人成在线播放网站岛国| 国产精品欧美一区二区三区不卡| 成人激情视频网| 久久久久se| 久久亚洲精品人成综合网| 亚洲色图欧美制服丝袜另类第一页| 不卡av电影院| 亚洲欧洲美洲在线综合| 欧美亚洲爱爱另类综合| 在线播放av网址| 国产亚洲精品bt天堂精选| 中文字幕免费观看一区| 午夜激情视频在线播放| 精品在线观看免费| 久久九九久精品国产免费直播| 国产91视频在线| 欧美在线激情视频| 国内一区二区三区在线视频| 精品欧美国产一区二区三区| 日韩一区二区三区三四区视频在线观看| 亚洲精品成a人ⅴ香蕉片| 国产一区视频观看| 国产精品美女久久久久av爽李琼| 国语自产精品视频在线看抢先版结局| 中文字幕日韩欧美一区二区三区| 日本视频中文字幕| 午夜国产精品视频免费体验区| 日本一区二区三区高清不卡| 成人毛片在线免费观看| 欧美人与动性xxxxbbbb| 色狠狠久久av五月综合|| 亚洲欧美另类综合| 久久视频在线视频| 黄色一级片黄色| 欧美日韩视频免费播放| 手机看片日韩av| 免费久久久久久久久| 亚洲精品欧美一区二区三区| 国产精品一区二区在线播放| 亚洲裸体俱乐部裸体舞表演av| 亚洲国产成人精品激情在线| 在线观看的黄色| 精品欧美一区二区精品少妇| 国产精品国色综合久久| 超碰电影在线播放| 国产三级三级看三级| 日本美女久久| 成品人视频ww入口| 国产精品主播在线观看| 五月天亚洲视频|