0

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

4

1 回答 1

2

COMMAND_HANDLER

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

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

于 2012-02-18T04:07:32.837 回答