Поделиться через


Функция 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)

См. также раздел

Основные понятия

GetParent

Справочные материалы

Windows