您的位置:首页 > 其它

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

2009-10-16 13:13 375 查看
自定义消息的步骤
一、定义消息

#define WM_MYMESSAGE (WM_USER + 100)

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

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

afx_msg LRESULT OnMyMessage(WPARAM wParam,  LPARAM lParam); 

如下:

protected: 

    // {{AFX_MSG(...) 

    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() 

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

ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) 

如下:

BEGIN_MESSAGE_MAP(...) 

    //{{AFX_MSG_MAP(...) 

    ON_WM_CREATE() 

    ON_WM_TIMER() 

    ON_MESSAGE(WM_MYMESSAGE, OnMyMessage) 

    //}}AFX_MSG_MAP 

END_MESSAGE_MAP() 

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

LRESULT YourClass::OnMyMessage(WPARAM wParam, LPARAM lParam) 



    return 0; 

}

截获消息的方法
在你需要使用消息处理函数的地方使用SendMessage(WM_MYMESSAGE)或PostMessage(WM_MYMESSAGE)将消息发送到消息队列。
两者的区别如下:
SendMessage:将消息发送到消息队列后,等待消息处理完后才会返回,继续执行执行其后代码。
PostMessage:将消息发送到消息队列后,不等待消息处理,立即返回,并执行其后代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  microsoft user timer