CallWindowProcA 함수(winuser.h)
지정된 창 프로시저에 메시지 정보를 전달합니다.
통사론
LRESULT CallWindowProcA(
[in] WNDPROC lpPrevWndFunc,
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam
);
매개 변수
[in] lpPrevWndFunc
형식: WNDPROC
이전 창 프로시저입니다.
[in] hWnd
형식: HWND
메시지를 받을 창 프로시저에 대한 핸들입니다.
[in] Msg
형식: UINT
메시지입니다.
[in] wParam
형식: WPARAM
추가 메시지 관련 정보입니다. 이 매개 변수의 내용은 Msg 매개 변수의 값에 따라 달라집니다.
[in] lParam
형식: LPARAM
추가 메시지 관련 정보입니다. 이 매개 변수의 내용은 Msg 매개 변수의 값에 따라 달라집니다.
반환 값
형식: LRESULT
반환 값은 메시지 처리 결과를 지정하고 보낸 메시지에 따라 달라집니다.
발언
창 서브클래싱에 CallWindowProc 함수를 사용합니다. 일반적으로 클래스가 동일한 모든 창은 하나의 창 프로시저를 공유합니다. 서브클래스는 클래스의 창 프로시저에 전달되기 전에 메시지가 다른 창 프로시저(또는 프로시저)에 의해 가로채고 처리되는 동일한 클래스의 창 또는 창 집합입니다.
SetWindowLong 함수는 특정 창과 연결된 창 프로시저를 변경하여 서브클래스를 만들어 시스템에서 이전 창 프로시저 대신 새 창 프로시저를 호출하게 합니다. 애플리케이션은 CallWindowProc호출하여 새 창 프로시저에서 처리되지 않은 메시지를 이전 창 프로시저에 전달해야 합니다. 이렇게 하면 애플리케이션에서 창 프로시저 체인을 만들 수 있습니다.
LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM);
int (FAR WINAPI * FARPROC) ()
C에서 FARPROC 선언은 지정되지 않은 매개 변수 목록이 있는 콜백 함수를 나타냅니다. 그러나 C++에서 선언의 빈 매개 변수 목록은 함수에 매개 변수가 없음을 나타냅니다. 이러한 미묘한 구분은 부주의한 코드를 깨뜨릴 수 있습니다. 다음은 이 상황을 처리하는 한 가지 방법입니다.
#ifdef STRICT
WNDPROC MyWindowProcedure
#else
FARPROC MyWindowProcedure
#endif
...
lResult = CallWindowProc(MyWindowProcedure, ...) ;
빈 인수 목록으로 선언된 함수에 대한 자세한 내용은 Bjarne Stroustrup에서 C++ 프로그래밍 언어, 두 번째 버전
CallWindowProc 함수는 유니코드-ANSI 변환을 처리합니다. 창 프로시저를 직접 호출하는 경우 이 변환을 활용할 수 없습니다.
예제
예를 들어 창 서브클래싱하는
메모
winuser.h 헤더는 CALLWindowProc를 UNICODE 전처리기 상수의 정의에 따라 이 함수의 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에서 도입됨) |
참고 항목
개념
GetWindowLong
참조
SetClassLong
setWindowLong