VC 中自定義訊息實現

2021-08-26 04:06:37 字數 1780 閱讀 3411

在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 巨集定義兩個...