Кажется, есть ошибка в Apache Flink - https://issues.apache.org/jira/browse/FLINK-4581
Уведомления о кнопке отправляются в родителя кнопки, который является групповым блоком. Поскольку Вы разделили на подклассы групповой блок, Ваш 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
даже если Вы не разделяете групповой блок на подклассы.
Я надеюсь, что это помогает!
Я подозреваю, удаляете ли Вы подкласс все вместе, что события кнопки все еще не достигнут исходной оконной процедуры, как Вы ожидаете.
Так как у Вас есть процедура подкласса, делающая не что иное как называющая CallWindowProc, окно является эффективно не подклассами.
Мое предложение состояло бы в том, чтобы использовать инструмент Spy ++ для наблюдения, какое окно получает сообщения о событиях кнопки.
Один из более трудных аспектов программирования Win32 определяет, какое окно добирается, какое сообщение и Шпион ++ неоценимы когда дело доходит до выяснения этой информации.