你的位置:首页 > 操作系统

[操作系统]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 }

   说明:

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