Как узнать, какое окно вызвало WM_PARENTNOTIFY? - PullRequest
0 голосов
/ 06 марта 2020

Когда я установил родителя кнопки (A) на другую кнопку (B), я обнаружил, что она не вызовет сообщение WM_COMMAND кнопки A и что будет получено сообщение WM_PARENTNOTIFY, полученное окно (родитель кнопки A). Но после просмотра ссылки я не нашел способа получить идентификатор кнопки B, например HMENU или HWND. Может ли кто-нибудь мне помочь?

image

Corresponding Image

1 Ответ

0 голосов
/ 10 марта 2020

Да, конечно, странно, что кто-то помещает кнопку в другую кнопку или, скажем, устанавливает родительскую кнопку для другой кнопки, но это имеет некоторое значение c, означающее, когда родительская кнопка имеет стиль BS_GROUPBOX, так же как Frame в Visual Basi c.

img_button_in_button

Мое решение этой проблемы - вызов SetWindowSubClass после создания нового и, таким образом, новая функция обратного вызова, установленная при вызове этого API, может получить реальное значение hWnd элемента управления, инициирующего это событие.

Замечание:

  • Используйте return DefSubclassProc(hWnd, uMsg, wParam, lParam);, если это событие не должно обрабатываться элементом управления.

  • Удалите стиль WS_CHILD для тех элементов управления, которые вызывают SetWindowSubClass, иначе эти элементы управления не могут быть правильно отображены, и единственное, что отображается, это просто пустое окно.

Спасибо всем, кто помог меня в этом вопросе!

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