MFC中,如何自定义用户消息
1、用处
在多个类之间传递消息。当需要响应用户操作,本类却无法实现时,可以向系统发出消息。然后让系统中的需要的位置实现它。
2、方法
2.1定义这个消息,并让拥有者发送这个这个消息,传递一个整型参数
这里才需要发送消息的地方(实现文件,cpp文件中) 添加以下代码:
1 //--让父窗口去更改值 2 int nrow(0); 3 GetOwner()->SendMessage(WM_CHANGED,0,nrow);
2.2 这里的 WM_CHANGED 需要用户自己定义值, MFC中给用户自定义消息预留了消息字段 。
在(声明文件,H文件中),添加以下代码:
1 #define WM_CHANGED WM_USER+3//--WM_USER 是系统宏
2.3 在需要响应这个消息的队列中,添加对这个消息的声明及相应实现
在cpp文件中,添加以下代码
1 BEGIN_MESSAGE_MAP(CWordReportView, CFormView) 2 ON_MESSAGE(WM_CHANGED,OnChangeSubTargetName) 3 END_MESSAGE_MAP()
2.4 对用户自定义消息的实现函数进行 函数声明和函数实现
在头文件中声明
1 afx_msg LRESULT OnChangeSubTargetName(WPARAM wParam, LPARAM lParam);
在 cpp文件中实现
1 LRESULT CWordReportView::OnChangeSubTargetName(WPARAM wParam, LPARAM lParam) 2 { 3 CString str("响应了用户自定义消息"); 4 afxMessageBox(str); 5 return 0; 6 }
说明:
用户自定义消息本质上就是为类添加一个成员函数,然后将这个函数注册为消息,使得其可以被触发而不是要手动调用。