MFC中,如何自定义用户消息

时间:2023-03-08 23:18:38
MFC中,如何自定义用户消息

1、用处

在多个类之间传递消息。当需要响应用户操作,本类却无法实现时,可以向系统发出消息。然后让系统中的需要的位置实现它。

2、方法

2.1定义这个消息,并让拥有者发送这个这个消息,传递一个整型参数

这里才需要发送消息的地方(实现文件,cpp文件中) 添加以下代码:

 //--让父窗口去更改值
int nrow();
GetOwner()->SendMessage(WM_CHANGED,,nrow);

2.2 这里的 WM_CHANGED 需要用户自己定义值, MFC中给用户自定义消息预留了消息字段 。

在(声明文件,H文件中),添加以下代码:

 #define WM_CHANGED WM_USER+3//--WM_USER 是系统宏

2.3  在需要响应这个消息的队列中,添加对这个消息的声明及相应实现

在cpp文件中,添加以下代码

 BEGIN_MESSAGE_MAP(CWordReportView, CFormView)
ON_MESSAGE(WM_CHANGED,OnChangeSubTargetName)
END_MESSAGE_MAP()

2.4 对用户自定义消息的实现函数进行 函数声明和函数实现

在头文件中声明

  afx_msg LRESULT OnChangeSubTargetName(WPARAM wParam, LPARAM lParam);

在 cpp文件中实现

 LRESULT CWordReportView::OnChangeSubTargetName(WPARAM wParam, LPARAM lParam)
{
CString str("响应了用户自定义消息");
afxMessageBox(str); return ;
}

说明:

用户自定义消息本质上就是为类添加一个成员函数,然后将这个函数注册为消息,使得其可以被触发而不是要手动调用。