Win32 ListBox WNDPROC никогда не вызывается

Я пишу довольно простую оболочку для Win32 элементов управления / диалогов / окон.

У меня проблема в том, что ListBox и ComboBox ведут себя по-разному.

В базовом классе Widget, от которого я наследую, я переопределяю существующий WNDPROC для элемента управления, а затем обрабатываю сообщения в новом WNDPROC, в первую очередь продвигая их в события boost :: signal.

Проблема в том, что, хотя WndProc ComboBox получает CBN_SELCHANGE — как и ожидалось — WndProc ListBox не получает команду LBN_SELCHANGE.

Я понимаю, что диалоговое окно / окно, которому принадлежит элемент управления, скорее всего, получит это, но я вроде как уже спустился в эту кроличью нору, и это похоже на довольно аккуратное решение. Нужно ли мне возвращаться назад и заставлять владельцев элементов управления обрабатывать сообщения WM_COMMAND (и оттуда преобразовывать их в событие на самом элементе управления).

Это учебное упражнение, поэтому, пожалуйста, не напоминайте мне о MFC и не комментируйте ценность этого.

0

Решение

Уведомительные сообщения обычно отправляются родителю элемента управления. Предположительно, все окна (то есть родительские окна и элементы управления) используют одну и ту же оконную процедуру? В этом случае обычное решение: в обработчике уведомлений в вашей оконной процедуре проверьте, пришло ли уведомление из текущего окна. Если это так, поднять событие; если оно не отправило сообщение обратно элементу управления, откуда оно пришло (где оно будет вызвано как событие).

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector