WTL:处理某些命令处理程序中的某些命令

时间:2012-02-17 09:16:58

标签: windows visual-c++ wtl

我是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

1 个答案:

答案 0 :(得分:2)

来自COMMAND_HANDLER

  

在调用CommandHandler之前,消息映射将bHandled设置为TRUE。   如果CommandHandler没有完全处理消息,它应该设置   bHandled为FALSE表示该消息需要进一步处理。

WTL调用处理程序,只要它们都没有表示它们处理了消息。 如果处理程序未将bHandled显式设置为FALSE,则WTL不会将消息传递给下一个处理程序。