MFC一一新增WM USER自定義訊息

2021-09-23 15:48:06 字數 1352 閱讀 3618

有些時候,我們希望自定義一些訊息響應函式來控制何時進行訊息觸發,或針對兩個不同類或執行緒之間進行訊息互動,這個時候自定義訊息響應函式就起到很大作用了。那麼如何新增自定義訊息呢?具體分為以下幾步:

(1).定義wm_user巨集

#define wm_user_refurbish_test_result        (wm_user + 1001)

(2).新增訊息對映巨集

begin_message_map(cformview_main, cformview)

on_message(wm_user_refurbish_test_result, &cformview_main::onuserrefurbishtestresult)

on_wm_create()

on_wm_size()

end_message_map()

(3)在標頭檔案類的定義中宣告訊息響應函式

afx_msg lresult onuserrefurbishtestresult(wparam wparam, lparam lparam);

(4)定義並實現訊息響應函式

afx_msg lresult cformview_main::onuserrefurbishtestresult(wparam wparam, lparam lparam)

return 0;

}我們可以看到,訊息響應中的函式包含了wparam和lparam引數,在訊息響應傳送的時候,可以根據不同需求來進行定義,如下是訊息響應傳送的實現示例:

/*lresult sendmessage(hwnd hwnd,uint wmsg,wparam wparam,lparam iparam);

引數:hwnd:其視窗程式將接收訊息的視窗的控制代碼。如果此引數為hwnd_broadcast,則訊息將被傳送到系統中所有頂層視窗,包括無效或不可見的非自身擁有的視窗、被覆蓋的視窗和彈出式視窗,但訊息不被傳送到子視窗。

wmsg用於區別其他訊息的常量值,這些常量可以是windows單元中預定義的常量,也可以是自定義的常量.

wparam通常是乙個與訊息有關的常量值,也可能是視窗或控制項的控制代碼

lparam通常是乙個指向記憶體中資料的指標。由於wparm、lparam和pointer都是32位的,因此,它們之間可以相互轉換

返回值:返回值指定訊息處理的結果,依賴於所傳送的訊息。

*/sendmessage(wm_user_refurbish_test_result,_e_status_ready,null);

sendmessage(wm_user_refurbish_test_result,_e_status_doing,(lparam)&strinfo);

--------------------- 

原文: 

MFC新增自定義訊息

由於mfc中無法通過類嚮導來自定義訊息,所以需要手動新增,主要過程如下 本文基於vs2008下通過執行緒實現資料實時更新的對話方塊運用程式 1.定義訊息 resource.件中 由於很多新控制項也會用到wm user訊息,所以定義wm user 100或更高,避免衝突 define wm updat...

MFC新增使用者自定義訊息

1 傳送訊息 首先在a的標頭檔案中定義這個訊息 define wm usermessage wm user 100所有自定義訊息都是以wm user訊息為基礎加上乙個任意的自然數來表示的。2 接受訊息 物件接受乙個訊息,應該有三部分 在標頭檔案中有該訊息的處理函式的原型 在實現檔案中有接受訊息對映的...

MFC 新增自定義訊息對映

定義個訊息巨集 當需要自定義多個訊息巨集時,後面加的數遞增就行了 define wm mymsg wm user 100 宣告事件處理函式 注意返回值型別必須為lresult 前面的afx msg不用管直接寫上就可以了,函式名自定義,引數根據自己需求,如 wparam 10,lparam buff ...