Когда обычный орган управления Инструментальная панель оперативно отслеживает
кнопки, он выделяет активную кнопку и отправляет приложению уведомление
TBN_HOTITEMCHANGE каждый раз, когда новая кнопка активизирована. Ваше
приложение ответственно за то, чтобы показать на экране соответствующее
раскрывающееся меню. Для этого нужно:
Обработать уведомление TBN_HOTITEMCHANGE, чтобы отследить
активную кнопку. Когда активная кнопка изменяется, старое меню свертывается
и создается новое.
Обработать уведомление TBN_DROPDOWN, которое отправляется тогда,
когда по кнопке щелкнули. Затем нужно свернуть меню и запретить оперативное
слежение за ним. Кнопка остается активной.
Обработать сообщения WM_LBUTTONDOWN, WM_RBUTTONDOWN и WM_MOUSEMOVE в вашей
фильтр (hook) - процедуре сообщений, отследить
позицию мыши. Если мышь нажата вне зоны меню, свернуть текущее
раскрывающееся меню, деактивизировать оперативное слежение за ним и
возвратить строку меню в ее состояние перед активизацией.
Когда команда меню запущена, запретите оперативное слежение за меню.
Меню свернется автоматически, но Вы должны явно освободить фильтр (hook) -
процедуру сообщений.
Вы должны также обработать связанную с меню передачу сообщений, таких как
сообщение WM_INITMENUPOPUP, которое отправляется тогда, когда пункт меню должен
показать на экране подменю. Обсуждение того, как обрабатывать такие сообщения,
см. главу Меню.