MFC 程序間訊息傳遞

2021-09-09 05:12:18 字數 2348 閱讀 3210

在涉及到將乙個程序的資訊傳送到另乙個程序的訊息,並讓另乙個進行訊息處理,通常需要涉及到程序間通訊。

分別在兩個程序間定義訊息;

在要接受的程序間定義訊息對映;

在傳送訊息的程序進行訊息觸發;

在進行傳送訊息的程序首先獲取到接受程序的控制代碼,通過定義的訊息進行傳送訊息,在接受程序定義對應的訊息對映;

在傳送程序定義訊息:

#define mess_1 wm_user + 111

#define mess_2 wm_user + 112

#define mess_3 wm_user + 113

#define mess_4 wm_user + 114

#define mess_5 wm_user + 115

#define mess_6 wm_user + 116

#define mess_7 wm_user + 117

在傳送程序獲取接受程序的控制代碼:

hwnd m_hadaptorwnd = null;

cstring strfilename(buf);

winexec(strfilename,sw_hide);

cstring str = _t("打標軟體demo"); //要查詢的窗體名稱

m_hadaptorwnd = findwindow(null,str);

showwindow(m_hadaptorwnd,sw_hide);

if(!m_hadaptorwnd)

在傳送程序進行訊息傳遞:

::sendmessage(m_hadaptorwnd,mess_1,(wparam)0,(lparam)0);

::sendmessage(m_hadaptorwnd,mess_2,(wparam)0,(lparam)0);

::sendmessage(m_hadaptorwnd,mess_3,(wparam)0,(lparam)0);

::sendmessage(m_hadaptorwnd,mess_4,(wparam)0,(lparam)0);

::sendmessage(m_hadaptorwnd,mess_5,(wparam)0,(lparam)0);

::sendmessage(m_hadaptorwnd,mess_6,(wparam)0,(lparam)0);

::sendmessage(m_hadaptorwnd,mess_7,(wparam)0,(lparam)0);

在接受程序中定義程序:

#define mess_1		    wm_user + 111

#define mess_2 wm_user + 112

#define mess_3 wm_user + 113

#define mess_4 wm_user + 114

#define mess_5 wm_user + 115

#define mess_6 wm_user + 116

#define mess_7 wm_user + 117

在接受程序中定義訊息對映:

在標頭檔案中定義進行宣告:

declare_message_map()

***1

***2

***3

***4

***5

***6

***7

在對應的.cpp檔案實現:

begin_message_map(classname,basedname)

on_message(mess_1,***1)

on_message(mess_2,***2)

on_message(mess_3,***3)

on_message(mess_4,***4)

on_message(mess_5,***5)

on_message(mess_6,***6)

on_message(mess_7,***7)

end_mess_map

在接受訊息程序中處理相應的對映函式:

***1()

***2()

***3()

***4()

***5()

***6()

***7()

其中,sendmessage和postmessage之間的區別:

sendmessage傳送「不進隊訊息」,直接把訊息傳送給視窗,並呼叫該視窗的視窗過程函式進行處理。在視窗過程對訊息處理完畢後,返回處理結果。

postmessage傳送「進隊訊息」。將訊息放入與建立視窗的執行緒相關聯的訊息佇列後立即返回

程序間傳遞訊息

使用自定義訊息 1 首先定義訊息 例如 define wm yourmesg wm user 100 2 加入訊息響應巨集,在響應該訊息的類中 c c code?1 2 3 4 5 begin message map cchiliddlg,cdialog afx msg map end messag...

mfc 訊息傳遞

訊息分類 windows的訊息都是以wm 為名,wm 的意思是 windows message mfc把訊息分為三大類 命令訊息 wm command 命令訊息意味著 使用者命令程式做某些操作 凡是ui物件產生的訊息都是這種命令訊息,可能來自選單或加速鍵或工具欄按鈕,並且都以wm command呈現...

mfc 訊息傳遞

mfc 傳送訊息sendmessage 自定義訊息 define wm refresh wm user 200 點選子窗體按鈕時,傳送訊息sendmessage pfartherdialog hwnd,wm refresh,wparam m data,lparam nbufsize pfarther...