MFC中訊息機制之實現多窗體資訊的傳輸

2021-07-03 20:45:26 字數 1934 閱讀 9562

mfc中訊息機制之實現多窗體資訊的傳輸

1.在建好的工程.h

檔案中巨集定義兩個訊息id

#define wm_main_msg wm_user+0x00001

#define wm_sub_msg wm_user+0x00002

注:wm_user+0x0001

是為了區分使用者自定義訊息和系統訊息

2.分別在父窗體和子窗體中建立訊息對映表

(父窗體的.cpp

檔案)

begin_message_map(crevmsgdlg, cdialog)

//}afx_msg_map

end_message_map()

(子窗體的.cpp

檔案)

begin_message_map(cmysubdialog, cdialog)

//}afx_msg_map

end_message_map()

3.分別在父窗體和子窗體定義並實現訊息處理函式

(父窗體)

.h檔案中宣告

afx_msg lresult onmainmsg(wparam wparam, lparam lparam);

.cpp檔案中實現

//開啟子窗體

void crevmsgdlg::onbutton1() 

// todo: add your control notification handler code here

dlg = new cmysubdialog();

dlg->create(idd_dialog1,this);

afxmessagebox("1");

if (dlg != null)

dlg->showwindow(sw_show);

//向子窗體傳送訊息

void crevmsgdlg::onbutton2() 

// todo: add your control notification handler code here

cstring stredit;

getdlgitemtext(idc_edit1,stredit);

if (dlg != null)

dlg->sendmessage(wm_sub_msg,(wparam)&stredit);

//處理子窗體發過來的資訊

afx_msg lresult crevmsgdlg::onmainmsg(wparam wparam, lparam lparam)

cstring *strmsg = (cstring *)wparam;

setdlgitemtext(idc_edit1, *strmsg);

return 0;

子窗體.h檔案

on_message(wm_sub_msg, cmysubdialog::onsubmsg);

.cpp檔案

void cmysubdialog::onbutton1() 

// todo: add your control notification handler code here

cstring stredit;

getdlgitemtext(idc_edit1,stredit);

hwnd hwnd = this->getparent()->getsafehwnd();

if (hwnd != null)

::sendmessage(hwnd,wm_main_msg,(wparam)&stredit,null);

afx_msg lresult cmysubdialog::onsubmsg(wparam wparam, lparam lparam)

cstring *strmsg = (cstring *)wparam;

setdlgitemtext(idc_edit1, *strmsg);

return 0;

4.執行結果

MFC中訊息響應機制

由於視類視窗始終覆蓋在框架類視窗之上,因此所有操作,包括滑鼠單擊 滑鼠移動等操作都只能由視類視窗捕獲。乙個mfc訊息響應函式在程式中有三處相關資訊 函式原型 函式實現和以及用來關聯訊息和訊息響應函式的巨集。1 在訊息響應函式的原型 中,函式宣告的前部有乙個afx msg限定符,也是乙個巨集,該巨集表...

MFC中訊息對映機制

背景 父對話方塊下的幾個子對話方塊之間互相通訊,更改各自的控制項狀態 解決 1是通知父對話方塊,讓父對話方塊來處理。2是直接和子對話方塊通訊。都要用到訊息對映 1 子對話方塊在設定為child 無邊框之後是沒有名字的,我在通過父對話方塊來獲取子對話方塊控制代碼的時候一直失敗,所以考慮在uesd子對話...

MFC 訊息機制

windows應用程式是通過訊息驅動的,在mfc軟體開發時,進行介面操作經常要用到訊息,通過訊息對應的處理函式來實現響應的操作。比如,使用者操作視窗,就會產生訊息,送給對應的訊息處理函式進行處理,對使用者的操作做出一些反應。mfc使用訊息對映機制來處理訊息,具體表現就是訊息和訊息處理函式一一對應的訊...