MFC中如何處理自定義訊息

2021-07-26 10:55:03 字數 780 閱讀 9594

假設自定義訊息號是wm_test,訊息處理函式是ontest,處理該訊息的對話方塊指標是m_ptestdlg,則進行自定義訊息處理的步驟主要有以下:

1、定義訊息號,建議在stdafx.h中進行定義

#define wm_test wm_user+1
//! 自定義訊息

2、在響應該訊息的對話方塊標頭檔案中找到declare_message_map()巨集,在該巨集定義的前面新增訊息處理函式宣告

afx_msg void ontest(wparam wparam, lparam lparam);
//! afx_msg可以讓我們看到這是乙個訊息對映函式,編譯器直接忽略。(也可以直接宣告訊息響應函式)

3、在響應該訊息的對話方塊原始檔中,進行訊息處理函式的定義。

4、在響應該訊息的對話方塊原始檔中,找到訊息對映巨集

begin_message_map() 和 end_message_map(),並在這對巨集之間加入

on_message(wm_test, ontest);
5、通過

::postmessage(m_ptestdlg->getsafewnd(), wm_test, 0, 0);

::sendmessage(m_ptestdlg->getsafewnd(), wm_test, 0, 0);

當對話方塊類收到wm_test訊息時,ontest函式開始執行,完成訊息的響應。

VC 如何處理自定義訊息

在sdk程式設計中,對訊息的獲取與分發是通過訊息迴圈來完成。而在mfc程式設計中則是通過採取訊息對映的方式對其進行處理。相比而言,這樣的處理方式要簡單得多,這也是符合物件導向程式設計中盡可能隱含實現細節的原則。乙個完整mfc訊息對映包括對訊息處理函式的原型宣告 實現以及存在於訊息對映中的訊息入口。一...

VC 如何處理自定義訊息

classwizard不允許增加使用者自定義訊息,所以你必須手工輸入。輸入後,classwizard就可以象處理其它訊息一樣處理你自定義的訊息了。下面是增加自定義訊息的步驟 第二步 實現訊息處理函式。該函式使用wpram和lparam引數並返回lpesult。lpesult cmainframe o...

MFC自定義訊息

訊息機制是windows的典型執行機制,在mfc中有很多的訊息如wm btn 等。但是在有些情況下我們需要自定義一些訊息去做一些我們需要的功能,mfc的嚮導不能幫助我們做到這一點,我們可以通過新增相應的 去完成這個功能。新增自定義訊息操作如下 1.建立mfc工程,如基於對話方塊的應用程式,test。...