建了一个基于对话框的MFC程序,在主对话框中添加tabcontrol控件,又新建了两个Dialog(CDialog1和CDialog2),将它们设为tabcontrol控件的子对话框。函数
目的:两个子对话框之间传递消息,子对话框与主对话框传递消息。this
第一步: 定义消息.
在目标窗口类的头文件或者stdafx.h中添加: #define WM_MY_MESSAGE (WM_USER+100); 推荐用户自定义消息至少是WM_USER+100,由于不少新控件也要使用WM_USER消息。.net
第二步: 在目标类头文件的AFX_MSG块中说明消息处理函数: afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);对象
[cpp] view plain copyblog
第三步:在目标类源文件cpp中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中。get
[cpp] view plain copyit
第四步: 实现消息处理函数。class
在目标类源文件cpp中,该函数使用WPRAM和LPARAM参数并返回LPESULT。 程序
[cpp] view plain copyim
第五步:发送消息时,在源地址类CDialog2的CPP文件中(如一个Button),调用函数PostMessage或SendMessa
ge发送消息。PoseMessage(WM_MY_MESSAGE,O,O); SendMessage(WM_MY_MESSAGE,O,O);
假如主对话框的类名:CSecondShimDlg,两个子对话框的类名CDialog1和CDialog2;
. 要实现两个子对话框之间进行通讯(CDialog2向CDialog1发送消息,目标类即为CDialog1),则在CDialog2源文件中的发送函数应该这么写:
[cpp] view plain copy
要实现CDialog2向主对话框CSecondShimDlg发送消息(目标类即为CSecondShimDlg),则:
[cpp] view plain copy
或者:
[cpp] view plain copy
这样便可完成对话框之间的消息传递。