WTL: для обработки определенных команд в определенных обработчиках команд - PullRequest
0 голосов
/ 17 февраля 2012

Я новичок в 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 Ответ

2 голосов
/ 18 февраля 2012

С COMMAND_HANDLER :

Карта сообщений устанавливает bHandled в TRUE до вызова CommandHandler. Если CommandHandler не полностью обрабатывает сообщение, он должен установить bHandled to FALSE, чтобы указать, что сообщение нуждается в дальнейшей обработке.

WTL вызывает обработчики, если никто из них не сообщил, что обработал сообщение. Если обработчик явно не установил bHandled в FALSE, WTL не будет передавать сообщение следующему обработчику.

...