Win32 уведомление Abt создание дочернего элемента управления - PullRequest
0 голосов
/ 21 апреля 2019

Итак, я создаю кнопку с функцией CreateWindowEx () с ее родителем (некоторым значением) в родительской части обработчика сообщений WM_CREATE со своими собственными пользовательскими данными, т.е. самый последний параметр CreateWindowEx () является указателем на некоторые произвольные данные.

Когда создается корневое / главное окно, мы получаем сообщение WM_CREATE или WM_NCCREATE, которое позволяет нам получить доступ к этой дате с помощью CREATESTRUCT через значение LPARAM и назначить ее окну через SetWindowPtr (пользовательские данные)

Но когда дочерний элемент управления создан и присоединен к этому родительскому элементу, процедура родительского окна не получает сообщение WM_CREATE, и данные создания для этой кнопки, переданные в CreateWindowEx (), теряются

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

В основном я хочу создать иерархию изэлементы управления (как в Java с панелями и панелями)когда родитель создает своих детей, когда он получает свой WM_CREATE (или какое-то другое сообщение, чтобы узнать, когда я могу начать назначать ему детей), и эти дети, в свою очередь, создают своих собственных детей, когда он получает свои сообщения WM_CREATE и, таким образом, свои собственные.

1 Ответ

2 голосов
/ 21 апреля 2019

Родительское окно получает WM_PARENTNOTIFY для создания дочернего окна (и нескольких других событий).Не устанавливайте расширенный стиль WS_EX_NOPARENTNOTIFY (который устанавливается по умолчанию для элементов управления, созданных классом диалогового окна).

Данные, полученные как часть WM_PARENTNOTIFY при создании окна, включают LPCREATESTRUCT, который был отправлен вокно во время WM_NCCREATE / WM_CREATE (WM_PARENTNOTIFY происходит, только если окно было успешно создано).

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