[Visual Studio C++] [MFC] 新增使用者自定義訊息及訊息響應函式講解
一、前言
本文介紹 兩種方法 新增使用者自定義訊息及訊息響應函式。
- 第一種,使用者手動新增兩個檔案((.h)和 (.cpp))的內容。
- 第二種,利用 MFC 的整合功能,自動新增。(推薦)
二、講解
1.方法一:使用者手動新增。
步驟:
1.在“ .h ”檔案中:
①.宣告訊息,程式碼如下:
#define WM_MyMessage WM_USER+100
(附:MFC自有的訊息都是在WM_USER內的,所以自定義的訊息要比WM_USER大。)
②.在類宣告中宣告訊息對映,程式碼如下:
DECLARE_MESSAGE_MAP()
③.在類宣告中定義訊息處理函式,程式碼如下:
afx_msg LRESULT OnMyMessage(WPARAM wParam ,LPARAM lParam);
2.在“ .cpp ”檔案中 :
①.定義訊息對映,程式碼如下:
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
ON_MESSAGE(MyMessage, &CAboutDlg::OnMymessage)
END_MESSAGE_MAP()
②.定義訊息處理函式,程式碼如下:
afx_msg LRESULT CAboutDlg::OnMymessage(WPARAM wParam, LPARAM lParam)
{
return 0;
}
2.方法二: MFC 軟體新增。
步驟:
①.在“ .h ”檔案中宣告訊息,程式碼如下:
#define WM_MyMessage WM_USER+100
(附:MFC自有的訊息都是在WM_USER內的,所以自定義的訊息要比WM_USER大。)
②.宣告訊息對映、宣告訊息處理函式、定義訊息對映、定義訊息處理函式,方法如下:
可用類嚮導中訊息->新增自定義訊息,新增的訊息名為WM_MyMessage,自動新增訊息處理函式。則系統自動在標頭檔案中新增訊息處理函式的宣告,.cpp檔案中新增訊息對映處理及訊息處理函式的定義,只需新增定義的具體內容即可。
(附:軟體自動生成結果展示:
宣告訊息對映部分:
DECLARE_MESSAGE_MAP()
宣告訊息處理函式部分:
afx_msg LRESULT OnMymessage(WPARAM wParam, LPARAM lParam);
定義訊息處理函式部分:
afx_msg LRESULT CDialog1::OnMymessage(WPARAM wParam, LPARAM lParam)
{
return 0;
}
定義訊息對映處理部分:
BEGIN_MESSAGE_MAP(CDialog1, CDialogEx)
ON_MESSAGE(WM_MyMessage, &CDialog1::OnMymessage)
END_MESSAGE_MAP()
)
3.傳送自定義訊息
傳送自定義訊息,可使用如下兩個函式:
SendMessage(WM_MyMessage,0,0);
或者
PostMessage(WM_MyMessage,0,0);