다음을 통해 공유


SetWindowSubclass 함수(commctrl.h)

창 하위 클래스 콜백을 설치하거나 업데이트합니다.

구문

BOOL SetWindowSubclass(
  [in] HWND         hWnd,
  [in] SUBCLASSPROC pfnSubclass,
  [in] UINT_PTR     uIdSubclass,
  [in] DWORD_PTR    dwRefData
);

매개 변수

[in] hWnd

형식: HWND

서브클래스되는 창의 핸들입니다.

[in] pfnSubclass

형식: SUBCLASSPROC

창 프로시저에 대한 포인터입니다. 이 포인터와 서브클래스 ID는 이 서브클래스 콜백을 고유하게 식별합니다. 콜백 함수 프로토타입은 SUBCLASSPROC를 참조하세요.

[in] uIdSubclass

형식: UINT_PTR

하위 클래스 ID입니다. 이 ID는 하위 클래스 프로시저와 함께 하위 클래스를 고유하게 식별합니다. 서브클래스를 제거하려면 하위 클래스 프로시저와 이 값을 RemoveWindowSubclass 함수에 전달합니다. 이 값은 uIdSubclass 매개 변수의 하위 클래스 프로시저에 전달됩니다.

[in] dwRefData

형식: DWORD_PTR

데이터를 참조하는 DWORD_PTR. 이 값의 의미는 호출 애플리케이션에 의해 결정됩니다. 이 값은 dwRefData 매개 변수의 하위 클래스 프로시저에 전달됩니다. 다른 dwRefData는 창 핸들, 하위 클래스 프로시저 및 uIdSubclass의 각 조합과 연결됩니다.

반환 값

형식: BOOL

서브클래스 콜백이 성공적으로 설치되었으면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

서브클래스 콜백은 콜백 주소와 호출자 정의 서브클래스 ID의 조합으로 식별됩니다. 콜백 주소 및 ID 쌍이 아직 설치되지 않은 경우 이 함수는 하위 클래스를 설치합니다. 쌍이 이미 설치된 경우 이 함수는 참조 데이터만 업데이트합니다.

각 콜백은 메시지를 필터링하기 위해 호출될 때 콜백 함수에 전달되는 단일 DWORD_PTR 참조 데이터를 저장할 수 있습니다. 콜백에 대한 참조 계산이 수행되지 않습니다. SetWindowSubclass 를 반복적으로 호출하여 참조 데이터 요소의 값을 변경할 수 있습니다.

경고 서브클래싱 도우미 함수를 사용하여 스레드 간에 창을 서브클래싱할 수 없습니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 commctrl.h
라이브러리 Comctl32.lib
DLL Comctl32.dll(버전 5.8 이상)
API 세트 ext-ms-win-shell-comctl32-window-l1-1-0(Windows 10 버전 10.0.14393에 도입됨)

추가 정보

DefSubclassProc

GetWindowSubclass

RemoveWindowSubclass