Я передаю указатель на экземпляр экземпляра класса для элементов управления как lpParam
и поймаю его при приеме WN_NCCREATE
.CreateWindowEx lpParam для кнопки и т. Д. В WM_NCCREATE
Это сообщение не отправляется при создании элементов управления, таких как статические или кнопки (пока).
Таким образом, я создаю окно, статическое и кнопочное, регистрирует указатели экземпляров и получает только одно сообщение WN_NCCREATE
с указателем на окна.
Вопрос: Как я могу получить переданный параметр?
В моей предыдущей попытке несколько лет назад я использовал std::map hwnd -> ptr
, который отлично работал. В этой попытке я пытаюсь получить немного глубже в WinAPI и попробовать другой подход. Теперь я застрял в этом, результаты Google пока не помогли.
Должен ли я придерживаться карты или есть другое решение?
Вы не можете перехватывать сообщения, отправленные системным элементам управления без их подклассификации, и к тому моменту, когда вы можете подклассифицировать элемент управления, он уже создан, и сообщение 'WM_NCCREATE' уже давно обработано. Что вы на самом деле пытаетесь сделать? Я почти уверен, что есть лучший способ. –
Я пытаюсь превратить GUI в классы и использовать некоторые функции C++ nn, чтобы создать красивый API. Просто некоторые играют. Экземпляр каждого виджета имеет свой собственный wndproc, который отвечает за запуск событий. Наблюдаемый шаблон поля отвечает за отправку и получение сообщений, тогда член установлен и т. Д. Чтобы иметь член и proc, мне нужно идентифицировать экземпляр, чтобы я мог передать сообщение его wndproc. – Silberling
Это не так, как работает обработка событий в стандартных элементах управления Windows. Для выполнения того, что вы хотите сделать, вам потребуется: a) написать все элементы управления с нуля или b) обработать события в процедурах окна вашего контейнера, перейдя в класс оттуда. – andlabs