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:将消息发送到消息队列后,不等待消息处理,立即返回,并执行其后代码。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值