CallWindowProcA 함수(winuser.h)
지정된 창 프로시저에 메시지 정보를 전달합니다.
구문
LRESULT CallWindowProcA(
[in] WNDPROC lpPrevWndFunc,
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam
);
매개 변수
[in] lpPrevWndFunc
형식: WNDPROC
이전 창 프로시저입니다. nIndex 매개 변수가 GWL_WNDPROC 또는 DWL_DLGPROC 설정된 GetWindowLong 함수를 호출하여 이 값을 가져오는 경우 실제로는 창 또는 대화 상자 프로시저의 주소이거나 CallWindowProc에만 의미 있는 특수 내부 값입니다.
[in] hWnd
형식: HWND
메시지를 받을 창 프로시저에 대한 핸들입니다.
[in] Msg
형식: UINT
메시지입니다.
[in] wParam
형식: WPARAM
추가 메시지 관련 정보입니다. 이 매개 변수의 내용은 Msg 매개 변수의 값에 따라 달라집니다.
[in] lParam
형식: LPARAM
추가 메시지 관련 정보입니다. 이 매개 변수의 내용은 Msg 매개 변수의 값에 따라 달라집니다.
반환 값
형식: LRESULT
반환 값은 메시지 처리 결과를 지정하고 보낸 메시지에 따라 달라집니다.
설명
창 서브클래싱에 CallWindowProc 함수를 사용합니다. 일반적으로 클래스가 동일한 모든 창은 하나의 창 프로시저를 공유합니다. 하위 클래스는 클래스의 창 프로시저로 전달되기 전에 다른 창 프로시저(또는 프로시저)에 의해 메시지가 가로채고 처리되는 동일한 클래스가 있는 창 또는 창 집합입니다.
SetWindowLong 함수는 특정 창과 연결된 창 프로시저를 변경하여 서브클래스를 만들어 시스템이 이전 창 프로시저 대신 새 창 프로시저를 호출하게 합니다. 애플리케이션은 CallWindowProc을 호출하여 새 창 프로시저에서 처리되지 않은 메시지를 이전 창 프로시저에 전달해야 합니다. 이렇게 하면 애플리케이션에서 창 프로시저 체인을 만들 수 있습니다.
STRICT가 정의된 경우 lpPrevWndFunc 매개 변수에는 WNDPROC 데이터 형식이 있습니다. WNDPROC 형식은 다음과 같이 선언됩니다.
LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM);
STRICT가 정의되지 않은 경우 lpPrevWndFunc 매개 변수에는 FARPROC 데이터 형식이 있습니다. FARPROC 형식은 다음과 같이 선언됩니다.
int (FAR WINAPI * FARPROC) ()
C에서 FARPROC 선언은 지정되지 않은 매개 변수 목록이 있는 콜백 함수를 나타냅니다. 그러나 C++에서 선언의 빈 매개 변수 목록은 함수에 매개 변수가 없음을 나타냅니다. 이러한 미묘한 구분은 부주의한 코드를 깨뜨릴 수 있습니다. 다음은 이 상황을 처리하는 한 가지 방법입니다.
#ifdef STRICT
WNDPROC MyWindowProcedure
#else
FARPROC MyWindowProcedure
#endif
...
lResult = CallWindowProc(MyWindowProcedure, ...) ;
빈 인수 목록으로 선언된 함수에 대한 자세한 내용은 Bjarne Stroustrup의 C++ 프로그래밍 언어, Second Edition 을 참조하세요.
CallWindowProc 함수는 유니코드-ANSI 변환을 처리합니다. 창 프로시저를 직접 호출하는 경우 이 변환을 활용할 수 없습니다.
예제
예제는 창 서브클래싱을 참조하세요.
참고
winuser.h 헤더는 CALLWindowProc을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | winuser.h(Windows.h 포함) |
라이브러리 | User32.lib |
DLL | User32.dll |
API 세트 | ext-ms-win-ntuser-window-l1-1-4(Windows 10 버전 10.0.14393에 도입됨) |
추가 정보
개념
참조