MFC 自定义消息
MFC中存在许多现成的消息句柄,但是当我们需要完成其他任务的时候,就需要用到自定义消息了,下面是有关自定义消息的介绍。
常规的自定义消息:
步骤:
1.定义消息。
例:#define WM_MY_MESSAGE 2.实现消息处理函数。
例:
LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam) {
// TODO: 处理用户自定义消息 ... return 0; }
WM_USER+100
3.在类头文件的AFX_MEG模块中说明消息处理函数。
class CMainFrame:public CMDIFrameWnd { ...
// 一般消息映射函数 protected:
// {{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnTimer(UINT nIDEvent);
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); //}}AFX_MSG
DECLARE_MESSAGE_MAP() }
4.在用户类的消息模块中使用ON_MESSAGE宏指令将消息映射到消息处理函数中。
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_WM_TIMER()
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) //}}AFX_MSG_MAP END_MESSAGE_MAP()
如果用户需要定义一个整个系统唯一的消息,可以调用SDK函数RegisterWindowMessage定义消息:
Static UINT WM_MY_MESSAGE = RegisterWindowMessage(“User”);
并使用ON_REGISTERED_MESSAGE宏指令取代ON_MESSAGE宏指令,其余步骤一样。
当需要使用自定义消息的时候,可以在相应的类的函数中调用函数PostMessage或者是SendMessage发送消息。
相关推荐: