在vc專案開發中,很多時候需要自己定義訊息進行事務處理。上次也剛好有同學問及,這裡綜合網路上的一些資料,集中起來供參考。
自定義訊息
我們可以通過一下兩種方法來自定義乙個訊息:
1) 方法一
step 1:使用wm_taskbarcreated來確定乙個沒有被windows本身搶占
的訊息值,在想新增訊息檔案中新增**:
const uint wm_userdefmsg = ::registerwindowmessage(_t("userdefmsg"));
step 2:定義訊息的處理過程:在處理訊息的類(如dlg類或者mainframe等)
新增訊息處理函式宣告:
afx_msg lresult onuserdefmsg(wparam wparam,lparam lparam);
在實現檔案中新增訊息處理實現,這裡給出乙個實現例子:
lresult ××××::onuserdefmsg(wparam wparam,lparam lparam)
//××××代表處理該訊息的類名
step 3:新增訊息處理巨集,在處理該訊息的類的訊息巨集中新增自定義訊息的巨集,即在begin_message_map**塊中新增**:
on_registered_message(wm_userdefmsg, onuserdefmsg)
自定義訊息完畢。
2) 方法二
step 1:定義訊息值,這裡不通過registerwindowmessage獲取,而是自定義方式實現,
在想新增訊息檔案中新增**:
#define wm_userdefmsg (wm_user + 101)
microsoft推薦自定義訊息值至少為wm_user + 100。
step 2:同方法一中實現;
step 3:同方法一中,但是巨集名稱改為on_message。
傳送訊息
按照上面方式我們已經自定義了訊息,並為該訊息實現了簡單的處理過程,這裡就通過
傳送訊息獲得自定義訊息的響應。在要觸發自定義訊息地方新增**:
::sendmessage(getsafehwnd(),wm_userdefmsg,0l,0l);
這樣你就觸發了該自定義訊息,並將得到提示對話方塊顯示。
下面是第二種增加自定義訊息方法的步驟:
第一步:定義訊息。開發windows95應用程式時,microsoft推薦使用者自定義訊息至少是wm_user+100,因為很多新控制項也要使用wm_user訊息。
第二步:實現訊息處理函式。該函式使用wpram和lparam引數並返回lpesult。
lpesultcmainframe::onmymessage(wparamwparam,lparamlparam)
第三步:在類標頭檔案的afx_msg塊中說明訊息處理函式:
classcmainframe:publiccmdiframewnd
}afx_msg
declare_message_map()
} 第四步:在使用者類的訊息塊中,使用on_message巨集指令將訊息對映到訊息處理函式中。
begin_message_map(cmainframe,cmdiframewnd)
//}afx_msg_map
end_message_map()
如果使用者需要乙個整個系統唯一的訊息,可以呼叫sdk函式registerwindowmessage並使用on_register_message巨集指令取代on_message巨集指令,其餘步驟同上。
VC中自定義訊息實現
在vc專案開發中,很多時候需要自己定義訊息進行事務處理。上次也剛好有同學問及,這裡綜合網路上的一些資料,集中起來供參考。u 自定義訊息 我們可以通過一下兩種方法來自定義乙個訊息 1 方法一 step 1 使用wm taskbarcreated來確定乙個沒有被windows本身搶占 的訊息值,在想新增...
VC中自定義訊息實現
在vc專案開發中,很多時候需要自己定義訊息進行事務處理。上次也剛好有同學問及,這裡綜合網路上的一些資料,集中起來供參考。u 自定義訊息 我們可以通過一下兩種方法來自定義乙個訊息 1 方法一 step 1 使用wm taskbarcreated來確定乙個沒有被windows本身搶占 的訊息值,在想新增...
vc 自定義訊息實現
本案例是根據兩個dialog 相互通訊總結而來,在兩個dialog都設定好後,分為四步實現訊息傳遞 專案名稱為 mfcmiltiwin 主dialog cmfcmiltiwindlg 從dialog cdialogsub 1 定義訊息id 在專案的標頭檔案中 mfcmiltiwin.h 巨集定義兩個...