用戶能夠自定義消息,在應用程序中主動發出,這種消息通常用於應用程序的某一部份內部處理。函數
實例說明: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)編譯運行,按鍵盤上的光標上移鍵,程序發送自定義消息,彈出一個對話框,以下圖所示: