VC中自定义消息的步骤与截获消息的方法

自定义消息的步骤:
一、定义消息。

  1. #define WM_MYMESSAGE (WM_USER + 100)

Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。

二、在.h文件中的AFX_MSG块中声明消息处理函数

  1. afx_msg LRESULT OnMyMessage(WPARAM wParam,  LPARAM lParam); 

如下:

  1. protected
  2.     // {{AFX_MSG(...) 
  3.     afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
  4.     afx_msg void OnTimer(UINT nIDEvent); 
  5.     afx_msg LRESULT OnMyMessage(WPARAM wParam,  LPARAM lParam); 
  6.     //}}AFX_MSG 
  7.     DECLARE_MESSAGE_MAP() 

三、在.cpp文件中添加消息映射宏

  1. ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) 

如下:

  1. BEGIN_MESSAGE_MAP(...) 
  2.     //{{AFX_MSG_MAP(...) 
  3.     ON_WM_CREATE() 
  4.     ON_WM_TIMER() 
  5.     ON_MESSAGE(WM_MYMESSAGE, OnMyMessage) 
  6.     //}}AFX_MSG_MAP 
  7. END_MESSAGE_MAP() 

四、在.cpp文件中编辑消息处理函数

  1. LRESULT YourClass::OnMyMessage(WPARAM wParam, LPARAM lParam) 
  2.     return 0; 
  3. }

截获消息的方法
在你需要使用消息处理函数的地方使用SendMessage(WM_MYMESSAGE)或PostMessage(WM_MYMESSAGE)将消息发送到消息队列。
两者的区别如下:
SendMessage:将消息发送到消息队列后,等待消息处理完后才会返回,继续执行执行其后代码。
PostMessage:将消息发送到消息队列后,不等待消息处理,立即返回,并执行其后代码。

 

你可能感兴趣的:(VC中自定义消息的步骤与截获消息的方法)