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
I'm a new in WTL.
One of the classes of a project I'm working on is WTL GUI class. Its message map contains a record:
COMMAND_CODE_HANDLER(0, OnMenuClick)
OnMenuClick
handles all WM_COMMAND
's are sent after menu click. Is there way to set another command handlers for some certain messages, while OnMenuClick
processes all other ones?
I tried this:
COMMAND_ID_HANDLER(ID_START_TASK, OnStartTask);
COMMAND_CODE_HANDLER(0, OnMenuClick)
It works, OnStartTask
processes ID_START_TASK
commands, but it depends on declaration order. If i change the strings declaration order, OnMenuClick
processes ID_START_TASK
commands.
I use VS 2008 + WTL 8.0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自COMMAND_HANDLER:
只要处理程序没有发出已处理消息的信号,WTL 就会调用处理程序。
如果处理程序没有显式地将 bHandled 设置为 FALSE,WTL 将不会将消息传递给下一个处理程序。
From COMMAND_HANDLER:
WTL calls handlers as long as none of them signalled that they handled the message.
If the handler doesn't explicitly set bHandled to FALSE, WTL will not pass the message to the next handler.