日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

MFC常用消息-處理函數(shù)-映射

 筆錄收藏 2012-09-11

常用消息

1WM_LBUTTONDOWN

  產(chǎn)生:單擊。

  參數(shù):wParam:包含一個整數(shù)值,以標識鼠標鍵的按下狀態(tài)。鼠標的按下標識及說明

  MK_LBUTTON  標識按下鼠標左鍵

  MK_MBUTTON  標識按下鼠標中鍵

  MK_RBUTTON  標識按下鼠標右鍵

  lParam:長參數(shù)lParam的低字位包含當前坐標的x坐標,在高字節(jié)包含當前坐標的Y坐標。

    相似的消息有:WM_LBUTTONUP、WM_RBUTTONDOWN、WM_RBUTTONUP、WM_LBUTTONDBLCLK、WM_RBUTTONDBLCLK

2WM_KEYDOWN

  產(chǎn)生:按下一個非系統(tǒng)鍵的時候產(chǎn)生該事件,系統(tǒng)鍵是指實現(xiàn)系統(tǒng)操作的組合鍵,例如,Alt與某個功能鍵的組合以實現(xiàn)菜單操作等。

  參數(shù):wParam:按下鍵的虛擬鍵盤碼,虛擬鍵碼用來標識按下或者釋放的是哪個鍵,例如功能鍵F1的虛擬鍵碼在windows.h文件中定義為VK_F1。

  lParam:長參數(shù)中記錄了按鍵的重復次數(shù),掃描碼、轉移代碼、先前鍵的狀態(tài)等信息。

  相似的消息有WM_KEYUP:放開按下的非系統(tǒng)鍵時產(chǎn)生的事件。

3、WM_CHAR

  產(chǎn)生:按一個非系統(tǒng)鍵時產(chǎn)生。

  參數(shù):wParam:所按下的鍵的ASCII碼。lParam:長參數(shù)中記錄了按鍵的重復次數(shù),掃描碼、轉移代碼、先前鍵的狀態(tài)等信息。

4、WM_CREATE

  產(chǎn)生:由CreateWindow函數(shù)發(fā)出,創(chuàng)建窗口。

  參數(shù):wParam:沒用。lParam:包含一個指向CREATESTRUCT數(shù)據(jù)結構的指針,該結構是傳遞給CreateWindow函數(shù)的參數(shù)的副本。

5、WM_CLOSE

  產(chǎn)生:當關閉當前窗口時產(chǎn)生。

  參數(shù):wParam:未用。lParam:未用。

6、WM_DESTROY

  產(chǎn)生:當窗口要銷毀時由DestroyWindow函數(shù)發(fā)出。

  參數(shù):wParam:沒用到。lParam:沒用到。

7、WM_QUIT

  產(chǎn)生:退出應用程序時由PostQuitMessage函數(shù)發(fā)出。

  參數(shù):wParam:含有退出代碼,退出代碼標識應用程序退出運行時的有關信息。lParam:未用。

8、WM_COMMAND

  產(chǎn)生:用戶與窗口或控件交互時,控件向其窗口發(fā)送WM_COMMAND消息。該消息的wParam參數(shù)的低字節(jié)中包含子窗口(控件)的標識值ID,高字節(jié)中包含子窗口向父窗口發(fā)出的通知代碼,lParam參數(shù)中包含控件子窗口句柄。

9、WM_PAINT

  用戶改變窗口大小或拖動窗口,系統(tǒng)向應用程序發(fā)送WM_PAINT消息,WM_PAINT消息調用BeginPaint函數(shù)。

消息處理函數(shù)

1、windows消息和控件通知的處理函數(shù)

  windows消息和控件通知都是由派生于CWnd的窗口類對象處理的。它們包括CFrameWnd、CMDIFrameWnd、 CMDIChildWnd、CView、CDialog以及從這些派生的用戶自定義的類。這樣的類對象封裝了windows窗口句柄HWND。

  windows消息和控件通知都有默認的處理函數(shù),這些函數(shù)在CWnd類中進行了預定義,MFC類庫以消息名為基礎形成這些處理函數(shù)的名稱,這些處理函數(shù)的名稱都以前綴"On"開始。有的處理函數(shù)不帶參數(shù),有的則有幾個參數(shù);有的還有除void以外的返回值類型。CWnd中消息處理函數(shù)的說明都有 afx_msg前綴。關鍵字afx_msg用于把處理函數(shù)和其他CWnd成員函數(shù)區(qū)分開來。例如,消息WM_PAINT的處理函數(shù)在CWnd中被聲明成:afx_msg void OnPaint();

  windows消息常見的有鼠標消息(如WM_LBUTTONDOWN)消息)、鍵盤字符消息(WM_CHAR消息)、鍵盤按鍵消息(WM_KEYDOWN)、窗口重畫消息WM_PAINT,水平和垂直條滾動消息WM_HSCROLLWM_VSCROLL)以及系統(tǒng)時鐘消息 WM_TIMER等。

2、命令消息的處理函數(shù)

  由于用戶界面的對象是用戶自已定義的,每個應用程序的用戶界面對象千差萬別,所以對用戶界面對象的命令消息沒有默認的處理函數(shù)。如果某條命令直接影響某個對象,則應該讓這個對象來處理這條命令。例如FILE菜單上的Open命令當然與應用程序有關:應用程序打開一個特定的文檔來響應該命令。所以,Open 命令的處理函數(shù)是應用程序類的一個成員函數(shù)。

  把命令消息映射成處理函數(shù)時,ClassWizard以命令ID來命名處理函數(shù),可以接受、修改、或替換推薦使用的名字。例如,Edit菜單項的Cut命令,對應ID就是ID_EDIT_CUT,處理函數(shù)被命名成:afx_msg void OnEditCut();

  此外,對于控件按鈕的BN_CLICKED通知消息,其處理函數(shù)可以被命名為:

  afx_msg void OnClickedUseAsDefault();

  命令消息的處理函數(shù)沒有參數(shù)值,也不返回值。

消息映射

  用MFC Application Wizard 創(chuàng)建應用程序框架時,AppWizard為創(chuàng)建的每個命令目標類(包括派生的應用程序對象、文檔、視圖、和邊框窗口等)編寫一個消息映射。每個命令目標類的消息映射存在相應的.cpp文件中??梢栽?/span>AppWizard創(chuàng)建的基本消息映射的基礎上,使用ClassWizard為每個類將處理的消息和命令添加一些條目。例如,對于應用程序類,MFC AppWizard創(chuàng)建的基本消息映射為:

  BEGIN_MESSAGE_MAP(CTextEditApp,CWinApp)

  //{{AFX_MSG_MAP(CTextEditApp)

  ON_COMMAND(ID_APP_ABOUT,OnAppAbout)

  //注:ClassWizard將在此處添加和刪除消息映射宏

  //不要編輯這些生成的代碼塊

  //}}AFX_MSG_MAP

  //基于標準文件的文檔命令(新建和打開)

  ON_COMMAND(ID_FILE_NEW,CWinApp::OnFileNew)

  ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen)

  //標準的打印設置命令

  ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp::OnFilePrintSetup)

  END_MESSAGE_MAP()

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多