我是WTL的新手。
我正在研究的项目的一个类是WTL GUI类。它的消息映射包含一条记录:
COMMAND_CODE_HANDLER(0, OnMenuClick)
OnMenuClick
处理菜单点击后发送的所有WM_COMMAND
。有没有办法为某些消息设置另一个命令处理程序,而OnMenuClick
处理所有其他消息?
我试过了:
COMMAND_ID_HANDLER(ID_START_TASK, OnStartTask);
COMMAND_CODE_HANDLER(0, OnMenuClick)
它有效,OnStartTask
进程ID_START_TASK
命令,但它取决于声明顺序。如果我更改字符串声明顺序,OnMenuClick
处理ID_START_TASK
命令。
我使用VS 2008 + WTL 8.0
答案 0 :(得分:2)
在调用CommandHandler之前,消息映射将bHandled设置为TRUE。 如果CommandHandler没有完全处理消息,它应该设置 bHandled为FALSE表示该消息需要进一步处理。
WTL调用处理程序,只要它们都没有表示它们处理了消息。 如果处理程序未将bHandled显式设置为FALSE,则WTL不会将消息传递给下一个处理程序。