MSDN говорит следующее о GetParent
функции:Правильный способ получения родительского окна
Для получения родительского окна и не владельца, вместо того, чтобы использовать
GetParent
, используйтеGetAncestor
с флагомGA_PARENT
,
Но при вызове GetAncestor(hWnd, GA_PARENT);
для окна, который не имеет родителя, он возвращает окно рабочего стола, в то время как GetParent
возвращается NULL
.
Итак, каков правильный способ получения родителя (а не владельца) и получения NULL
, если его нет?
Конечно, я мог проверить, возвращает ли GetAncestor
окно рабочего стола, но это похоже на хак для меня.
Правильный способ - вызвать GetAncestor и определить рабочий стол. –
Родитель окна верхнего уровня * - это окно рабочего стола. Сравните со значением GetDesktopWindow(), чтобы обнаружить это, а не совсем взломать, если вы также не занимаетесь несколькими настольными компьютерами. В противном случае это осложнилось тем, что SetParent() поддерживает программы Windows 3.x, где использование окна другого процесса в качестве родителя еще не было плохой идеей. –
Итак, вы говорите, что окно рабочего стола отличается для разных мониторов? Как мне это обработать? – Ben