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使用訊息對映機制來處理訊息,具體表現就是訊息和訊息處理函式一一對應的訊...