Можно ли суперклассировать диалоговое окно в Win32? - PullRequest
0 голосов
/ 16 марта 2020

Я использую сырые Win32 и C ++ для проекта. Насколько я понимаю, я могу суперклассировать Windows элементы управления, извлекая информацию о классе, заменяя процедуру, затем регистрируя ее как новый класс и используя ее при создании нового окна. Подклассы выполняются путем замены процедуры окна после того, как окно создано. Преимущество суперкласса в том, что вы можете обрабатывать сообщения до того, как вернется CreateWindow().

Я смотрю, можно ли переопределить диалоговое окно, созданное с помощью CreateDialog(), потому что я хотел бы использовать файл ресурсов для макета диалога. Проблема в том, что я не знаю, как бы я предоставил свой суперкласс при создании диалогового окна. Это вообще возможно? Есть идеи, как MF C справляется с этим?

1 Ответ

1 голос
/ 16 марта 2020

Если вы используете расширенный шаблон диалогового окна для создания своего диалога, вы можете указать пользовательский класс окна как часть определения DLGTEMPLATEEX .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...