本案例是根据两个dialog 相互通信总结而来,在两个dialog都设置好后,分为四步实现消息传递: 项目名称为:MFCmiltiWin 主dialog:CMFCmiltiWinDlg 从dialog:CdialogSub 1:定义消息ID 在项目的头文件中:MFCmiltiWin.h
//宏定义两个消息ID---区分用户自定义消息和系统消息--------------------------------- #define WM_MAIN_MSG WM_USER+0x00001 #define WM_SUB_MSG WM_USER+0x00002 //宏定义两个消息ID------------------------------------2:定义消息处理函数,为了能够将相互通信还需定义从类指针:dlg CMFCmiltiWinDlg.h
protected: //定义消息处理函数------- afx_msg LRESULT OnMainMsg(WPARAM wParam, LPARAM lParam); private: CdialogSub* dlg;CdialogSub.h
protected: //定义消息处理函数------- LRESULT OnSubMsg(WPARAM wParam, LPARAM lParam);3:实现消息处理函数 CMFCmiltiWinDlg.cpp
afx_msg LRESULT CMFCmiltiWinDlg::OnMainMsg(WPARAM wParam, LPARAM lParam) { CString* strMsg = (CString*)wParam; SetDlgItemText(IDC_EDITup, *strMsg); return 0; }CdialogSub.cpp
afx_msg LRESULT CdialogSub::OnSubMsg(WPARAM wParam, LPARAM lParam) { // 将 wParam 强制转换为 CString 类型 CString* strMsg = (CString*)wParam; // 设置对话框中编辑框的文本 SetDlgItemText(IDC_editSub, *strMsg); return 0; }4:建立: 消息<—–>消息函数的映射 在:BEGIN_MESSAGE_MAP END_MESSAGE_MAP() 中
CMFCmiltiWinDlg.cpp
BEGIN_MESSAGE_MAP(CdialogSub, CDialogEx) //建立 消息,消息处理函数 映射表_____ ON_MESSAGE(WM_MAIN_MSG, &CMFCmiltiWinDlg::OnMainMsg) //建立消息映射表_____ //建立消息映射表_____ END_MESSAGE_MAP()CdialogSub.cpp
BEGIN_MESSAGE_MAP(CdialogSub, CDialogEx) //建立消息映射表_____ ON_MESSAGE(WM_SUB_MSG, CdialogSub::OnSubMsg) //建立消息映射表_____ //建立消息映射表_____ END_MESSAGE_MAP()