VC++之自定義消息

用戶能夠自定義消息,在應用程序中主動發出,這種消息通常用於應用程序的某一部份內部處理。函數

 

實例說明:spa

當用戶按鍵盤上的光標上移鍵時,程序發送用戶自定義消息,在對應的消息響應函數中彈出消息對話框,顯示消息發送成功。blog

 

操做步驟:隊列

(1)建立一個單文檔應用程序,名爲:自定義消息處理。文檔

 

(2)定義用戶消息ID(標識符)值,在視圖類的頭文件CMyView.h中的前面寫以下語句,定義用戶消息的標識符:get

消息隊列

#endif  //_MSC_VER > 1000it

#define WM_MYMESSAGE    (WM_USER + 1)io

class CMyView : public CView編譯

{

   …
     }

 

(3)聲明並自定義用戶消息響應函數:

單擊項目工做區ClassView,展開「自定義消息處理files」,右鍵單擊CMyView,在彈出的快捷菜單中單擊Add Member Function,在彈出的對話框中的Function Type(函數類型)處寫:void,在Function Declaration(函數聲明)處寫:OnMyFunction(),這時就將該消息響應函數加到CMyView.cpp中了,並添加代碼:

void CMyView::OnMyFunction()

{

      MessageBox(「恭喜你,消息發送成功!」);
     }

 

(4)在視圖類的實現文件CMyView.cpp中的消息入口處添加消息映射:

BEGIN_MESSAGE_MAP(CMyView, CView)

//{{AFX_MSG_MAP(CMyView)

ON_MESSAGE(WM_MYMESSAGE, OnMyFunction)

//}}AFX_MSG_MAP

 

(5)編寫程序代碼

將WM_KEYDOWN消息響應函數(用戶按光標上移鍵時,將產生該消息)映射到視圖類CMyView中,並加代碼:

void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

{

      HWND hWnd = GetSafeHwnd();  //接收消息的窗口句柄

      if(nChar == VK_UP)  //光標上移鍵

      {

             ::PostMessage(hWnd, WM_MYMESSAGE, 0, 0);  //將自定義消息插入消息隊列並返回

             return ;

      }

      CView::OnKeyDown(nChar, nRepCnt, nFlags);
     }

 

(6)編譯運行,按鍵盤上的光標上移鍵,程序發送自定義消息,彈出一個對話框,以下圖所示:

image

相關文章
相關標籤/搜索