Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows WTL:在某些命令处理程序中处理某些命令_Windows_Visual C++_Wtl - Fatal编程技术网

Windows WTL:在某些命令处理程序中处理某些命令

Windows WTL:在某些命令处理程序中处理某些命令,windows,visual-c++,wtl,Windows,Visual C++,Wtl,我是WTL的新手 我正在处理的项目的一个类是WTLGUI类。其消息映射包含一条记录: COMMAND_CODE_HANDLER(0, OnMenuClick) OnMenuClick处理菜单单击后发送的所有WM\u命令。当OnMenuClick处理所有其他消息时,是否有办法为某些特定消息设置另一个命令处理程序 我试过这个: COMMAND_ID_HANDLER(ID_START_TASK, OnStartTask); COMMAND_CODE_HANDLER(0, OnMenuClick)

我是WTL的新手

我正在处理的项目的一个类是WTLGUI类。其消息映射包含一条记录:

COMMAND_CODE_HANDLER(0, OnMenuClick)
OnMenuClick
处理菜单单击后发送的所有
WM\u命令。当
OnMenuClick
处理所有其他消息时,是否有办法为某些特定消息设置另一个命令处理程序

我试过这个:

COMMAND_ID_HANDLER(ID_START_TASK, OnStartTask);
COMMAND_CODE_HANDLER(0, OnMenuClick)
它可以工作,
OnStartTask
处理
ID\u START\u TASK
命令,但它取决于声明顺序。如果我更改字符串声明顺序,
OnMenuClick
processs
ID\u START\u TASK
命令

我使用VS 2008+WTL 8.0,来自:

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

只要没有处理程序发出处理消息的信号,WTL就会调用处理程序。
如果处理程序没有显式地将bHandled设置为FALSE,WTL将不会将消息传递给下一个处理程序。

据我所知,
bHandled
默认设置为
true
。因此,我唯一需要做的就是在
OnMenuClick
中的
false
中设置它。在
ID\u START\u TASK
命令的情况下,我是对的吗?是的。如果您必须确保没有其他处理程序处理它,那么最好养成将其设置为FALSE并将其设置为TRUE的习惯。