VC++之自定义消息
用戶可以自定義消息,在應用程序中主動發出,這種消息一般用于應用程序的某一部分內部處理。
?
實例說明:
當用戶按鍵盤上的光標上移鍵時,程序發送用戶自定義消息,在對應的消息響應函數中彈出消息對話框,顯示消息發送成功。
?
操作步驟:
(1)創建一個單文檔應用程序,名為:自定義消息處理。
?
(2)定義用戶消息ID(標識符)值,在視圖類的頭文件CMyView.h中的前面寫如下語句,定義用戶消息的標識符:
…
#endif? //_MSC_VER > 1000
#define WM_MYMESSAGE??? (WM_USER + 1)
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)編譯運行,按鍵盤上的光標上移鍵,程序發送自定義消息,彈出一個對話框,如下圖所示:
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的VC++之自定义消息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于VS2017使用中常见的几个问题
- 下一篇: s3c2440移植MQTT