Как получить внука родительского окна или сына внука
У меня есть класс главного окна, называемый, например, файл, и каждое окно файла имеет несколько дочерних окон, например, страниц, и каждая страница имеет несколько дочерних окон, например, текстовые поля и т. Д., И т. Д.
Как получить дескриптор файла, из дескриптора текстового поля или одного из дочерних окон текстового поля.
Есть функция GetParent()
, но он возвращает родительский уровень на один уровень выше, и я ищу такую функцию, которая возвращает окно верхнего уровня.
Я написал свой код, который выполняет действие следующим образом, но мой вопрос, есть ли системная функция в win32?
HWND GetTopLevelWindow(HWND hChild)
{
HWND topParent = 0;
HWND h1 = hChild;
HWND h2;
while(topParent == 0)
{
h2 = GetParent(h1);
if(h2 == 0)
topParent = h1;
else
h1 = h2;
}
return topParent;
}
1 ответ
Решение
Вам нужно использовать GetAncestor
с аргументом GA_ROOT
, Например
HWND topParent = GetAncestor(hChild, GA_ROOT);