Функция SetParent (winuser.h)
Изменяет родительское окно указанного дочернего окна.
HWND SetParent(
[in] HWND hWndChild,
[in, optional] HWND hWndNewParent
);
[in] hWndChild
Тип: HWND
Дескриптор дочернего окна.
[in, optional] hWndNewParent
Тип: HWND
Дескриптор нового родительского окна. Если этот параметр имеет значение NULL, окно рабочего стола становится новым родительским окном. Если этот параметр HWND_MESSAGE, дочернее окно становится окном только для сообщений.
Тип: HWND
Если функция выполнена успешно, возвращается дескриптор предыдущего родительского окна.
Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Приложение может использовать функцию SetParent , чтобы задать родительское окно всплывающего, перекрывающегося или дочернего окна.
Если окно, определенное параметром hWndChild , отображается, система выполняет соответствующую перерисовку и перерисовку.
Из соображений совместимости SetParent не изменяет WS_CHILD или WS_POPUP стилей окна, родитель которого изменяется. Поэтому, если hWndNewParent имеет значение NULL, необходимо также очистить бит WS_CHILD и задать стиль WS_POPUP после вызова SetParent. И наоборот, если hWndNewParent не имеет значение NULL и окно ранее было дочерним элементом рабочего стола, необходимо очистить стиль WS_POPUP и задать стиль WS_CHILD перед вызовом SetParent.
При изменении родительского элемента окна необходимо синхронизировать UISTATE обоих окон. Дополнительные сведения см. в разделе WM_CHANGEUISTATE и WM_UPDATEUISTATE.
Если hWndNewParent и hWndChild Работают в разных режимах отслеживания DPI, могут возникнуть непредвиденные ошибки. В следующей таблице описано это поведение:
Операция | Windows 8.1 | Windows 10 (1607 и более ранние версии) | Windows 10 (1703 и более поздние версии) |
---|---|---|---|
SetParent (in-Proc) | Н/Д | Принудительный сброс (текущего процесса) | Сбой (ERROR_INVALID_STATE) |
SetParent (Cross-Proc) | Принудительный сброс (процесса дочернего окна) | Принудительный сброс (процесса дочернего окна) | Принудительный сброс (процесса дочернего окна) |
Дополнительные сведения об уровне DPI см. в документации windows High DPI.
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
Набор API | ext-ms-win-ntuser-window-l1-1-0 (появилось в Windows 8) |
Основные понятия
Справочные материалы