В нашем коде создается экземпляр класса C ++, производного от CMDIChildWnd
, и вызывается его функция Create()
, которая на самом деле CMDIChildWnd::Create()
. Пятый параметр pParentWnd
устанавливается для объекта CMDIFrameWnd
. Это в свою очередь (в коде MFC) устанавливает объект CREATESTRUCT
, устанавливает его hwndParent
для этого параметра и затем вызывает PreCreateWindow()
с этим объектом, переданным в качестве одного из параметров.
Однако при переходе вверх по списку родительских окон с помощью CWnd::GetParent()
(оригинал) GetAncestor(hwnd, GA_PARENT)
(просто попытка, поскольку оригинал не работает, а этому коду более 20 лет) и даже GetWindow(hwnd, GW_OWNER)
просто посмотрим, устанавливает ли он владельца окна по какой-то причине. В каждом случае я не вижу дескриптор, который связан с объектом CMDIFrameWnd
. Вместо этого показанный родительский элемент - рабочий стол, а владелец - NULL.
Используя Spy ++, он показывает то, что я ожидал. Как получить макет, заданный Spy ++ программно?