ON_REGISTERED_MESSAGE



zuowen2008 


使用 ON_REGISTERED_MESSAGE 定义一个消息处理函数,但是编译总过不了

ON_REGISTERED_MESSAGE(m_OverLoadMessage, OnOverLoad)

OnOverLoad 的定义为:

afx_msg LRESULT OnOverLoad(WPARAM wParam, LPARAM lParam);


我有更好的答案

提问者采纳



2008-08-20 18:38



ON_REGISTERED_MESSAGE是注册消息映射宏,原型如下;
ON_REGISTERED_MESSAGE(nMessageVariable, memberFxn )

nMessageVariable
注册的Windows消息ID变量
memberFxn
消息处理函数名

检查你的m_OverLoadMessage是否是Window注册消息变量。
应该这样定义此变量
static UINT NEAR WM_OVER_LOAD = RegisterWindowMessage(_T("OVER_LOAD"));

宏和函数声明为
ON_REGISTERED_MESSAGE(WM_OVER_LOAD, OnOverLoad) 

afx_msg LRESULT OnOverLoad(WPARAM wParam, LPARAM lParam);





ON_MESSAGE和ON_REGISTERED_MESSAGE



on_message用于处理一切消息,但是on_registered_message只用处理在系统已经注册过的消息。 

The RegisterWindowMessage function is used to define a new window message that is guaranteed to be unique throughout the system. The macro ON_REGISTERED_MESSAGE is used to handle these messages. This macro accepts a name of a UINT NEAR variable that contains the registered windows message ID.