Если окно имеет стиль WS_POPUP, то результат функции GetParent() всегда возвращает NULL. Если даже вы поменяли родительское окно у такого окна функцией SetParent() на требуемое родительское окно, то несмотря на что забота функции завершается без ошибки, но при функция GetParent() возвращает NULL. Тот же результат, когда вы меняете родительское окно на нужное у окна, которое не имеет стиль WS_POPUP, а потом с помощью функции SetWindowLong() устанавливается данный стиль окна. А окно ведет так, как-будто родительское окно установлено правильно
Если не устанавливать стиль WS_POPUP у окна дочерного, то все работает нормально.
ОС MS Windows 10 среда разработки MS VS2015 C++. Проект WINAPI32 + STL
Здравствуйте, qaz77, Вы писали:
Q>Получить owner window можно так: GetWindow(hwnd, GW_OWNER)
И у самого Microsoft-а полно подобного кода, например из shell-а:
if (hwnd && IsWindow(hwnd)) {
HWND hwndOwner;
while((NULL != (hwndOwner = GetParent(hwnd))) || (NULL != (hwndOwner = GetWindow(hwnd, GW_OWNER)))) {
hwnd = hwndOwner;
}