다음을 통해 공유


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에 도입됨)

추가 정보

개념

GetWindowLong

참조

SetClassLong

SetWindowLong

창 프로시저