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 창 스타일을 수정하지 않습니다. 따라서 hWndNewParentNULL인 경우 SetParent를 호출한 후 WS_CHILD 비트를 지우고 WS_POPUP 스타일을 설정해야 합니다. 반대로 hWndNewParentNULL이 아니고 창이 이전에 데스크톱의 자식인 경우 SetParent를 호출하기 전에 WS_POPUP 스타일을 지우고 WS_CHILD 스타일을 설정해야 합니다.

창의 부모를 변경하면 두 창의 UISTATE를 동기화해야 합니다. 자세한 내용은 WM_CHANGEUISTATEWM_UPDATEUISTATE 참조하세요.

hWndNewParenthWndChild가 다른 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
헤더 winuser.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll
API 세트 ext-ms-win-ntuser-window-l1-1-0(Windows 8 도입)

추가 정보

개념

GetParent

참조

Windows