1. 程式人生 > >[Visual Studio C++] [MFC] 新增使用者自定義訊息及訊息響應函式講解

[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);