Передача сообщений от подкласса до исходного WndProc

Кажется, есть ошибка в Apache Flink - https://issues.apache.org/jira/browse/FLINK-4581

5
задан efotinis 17 November 2008 в 21:31
поделиться

2 ответа

Уведомления о кнопке отправляются в родителя кнопки, который является групповым блоком. Поскольку Вы разделили на подклассы групповой блок, Ваш SubClassFunc получает эти сообщения, который затем передает их исходному использованию оконной процедуры группового блока CallWindowProc.

Если Вы хотите, чтобы уведомления о кнопке перешли к родительскому окну (т.е., window в Вашем коде), Вы могли или установить родителя кнопки на window вместо group_box, или используйте PostMessage из SubClassFunc добавлять сообщение (WM_COMMAND или WM_NOTIFY как соответствующий) к window.

Кроме того, я вижу, что Вы используете SetClassLong установить оконную процедуру. То, что это делает, заменить оконную процедуру для всего BUTTON класс, но только для окон, которые впоследствии создаются.Любой BUTTON окна создаются перед вызовом SetClassLong не будет разделен на подклассы. Можно хотеть рассмотреть использование SetWindowLong вместо этого, для разделения на подклассы отдельных окон, а не всего класса.

Править: Исходная оконная процедура группового блока не отправляет WM_COMMAND сообщения к его родителю. Это объяснено в книге Windows Программирования Charles Petzold:

Групповой блок, который имеет BS_GROUPBOX разработайте, причуда в классе кнопки. Это не обрабатывает мышь или ввод с клавиатуры, и не отправляет WM_COMMAND сообщения к его родителю.

Необходимо найти, что уведомления о кнопке не добираются до window даже если Вы не разделяете групповой блок на подклассы.

Я надеюсь, что это помогает!

4
ответ дан 15 December 2019 в 01:14
поделиться

Я подозреваю, удаляете ли Вы подкласс все вместе, что события кнопки все еще не достигнут исходной оконной процедуры, как Вы ожидаете.

Так как у Вас есть процедура подкласса, делающая не что иное как называющая CallWindowProc, окно является эффективно не подклассами.

Мое предложение состояло бы в том, чтобы использовать инструмент Spy ++ для наблюдения, какое окно получает сообщения о событиях кнопки.

Один из более трудных аспектов программирования Win32 определяет, какое окно добирается, какое сообщение и Шпион ++ неоценимы когда дело доходит до выяснения этой информации.

0
ответ дан 15 December 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: