다음을 통해 공유


LPCFHOOKPROC 콜백 함수(commdlg.h)

글꼴 대화 상자의 기본 대화 상자 프로시저에 대한 메시지 또는 알림을 받습니다. 이것은 ChooseFont 함수와 함께 사용되는 애플리케이션 정의 또는 라이브러리 정의 콜백 프로시저입니다.

LPCFHOOKPROC 형식은 이 콜백 함수에 대한 포인터를 정의합니다. CFHookProc 은 애플리케이션 정의 함수 이름의 자리 표시자입니다.

구문

LPCFHOOKPROC Lpcfhookproc;

UINT_PTR Lpcfhookproc(
  HWND unnamedParam1,
  UINT unnamedParam2,
  WPARAM unnamedParam3,
  LPARAM unnamedParam4
)
{...}

매개 변수

unnamedParam1

메시지가 의도된 글꼴 대화 상자에 대한 핸들입니다.

unnamedParam2

수신되는 메시지의 식별자입니다.

unnamedParam3

메시지에 대한 추가 정보입니다. 정확한 의미는 명명되지 않은Param2 매개 변수의 값에 따라 달라집니다.

unnamedParam4

메시지에 대한 추가 정보입니다. 정확한 의미는 명명되지 않은Param2 매개 변수의 값에 따라 달라집니다. namedParam2 매개 변수가 WM_INITDIALOG 메시지를 나타내는 경우 namedParam4는 대화 상자를 만들 때 지정된 값을 포함하는 CHOOSEFONT 구조체에 대한 포인터입니다.

반환 값

후크 프로시저가 0을 반환하면 기본 대화 상자 프로시저가 메시지를 처리합니다.

후크 프로시저가 0이 아닌 값을 반환하는 경우 기본 대화 상자 프로시저는 메시지를 무시합니다.

설명

ChooseFont 함수를 사용하여 글꼴 대화 상자를 만드는 경우 CFHookProc 후크 프로시저를 제공하여 대화 상자 프로시저에 대한 메시지 또는 알림을 처리할 수 있습니다. 후크 프로시저를 사용하도록 설정하려면 대화 상자 만들기 함수에 전달한 CHOOSEFONT 구조를 사용합니다. lpfnHook 멤버에서 후크 프로시저의 주소를 지정하고 Flags 멤버에서 CF_ENABLEHOOK 플래그를 지정합니다.

기본 대화 상자 프로시저는 WM_INITDIALOG 메시지를 후크 프로시저에 전달하기 전에 처리합니다. 다른 모든 메시지의 경우 후크 프로시저가 먼저 메시지를 받습니다. 후크 프로시저의 반환 값은 기본 대화 상자 프로시저가 메시지를 처리할지 아니면 무시할지를 결정합니다.

후크 프로시저가 WM_CTLCOLORDLG 메시지를 처리하는 경우 대화 상자의 배경을 그리는 유효한 브러시 핸들을 반환해야 합니다. 일반적으로 후크 프로시저가 WM_CTLCOLOR* 메시지를 처리하는 경우 지정된 컨트롤의 배경을 그리려면 유효한 브러시 핸들을 반환해야 합니다.

후크 프로시저에서 EndDialog 함수를 호출하지 마세요. 대신 후크 프로시저는 PostMessage 함수를 호출하여 IDABORT 값이 있는 WM_COMMAND 메시지를 대화 상자 프로시저에 게시할 수 있습니다. IDABORT를 게시하면 대화 상자가 닫히고 대화 상자 함수가 FALSE를 반환합니다. 후크 프로시저가 대화 상자를 닫은 이유를 알아야 하는 경우 후크 프로시저와 애플리케이션 간에 고유한 통신 메커니즘을 제공해야 합니다.

공통 대화 상자의 표준 컨트롤을 서브클래스할 수 있습니다. 그러나 대화 상자 프로시저는 컨트롤을 서브클래스할 수도 있습니다. 이 때문에 후크 프로시저가 WM_INITDIALOG 메시지를 처리할 때 컨트롤을 서브클래스해야 합니다. 이렇게 하면 하위 클래스 프로시저가 대화 상자 프로시저에서 설정한 하위 클래스 프로시저 전에 컨트롤 관련 메시지를 받습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 commdlg.h(Windows.h 포함)

추가 정보

CHOOSEFONT

ChooseFont

일반 대화 상자 라이브러리

개념

EndDialog

PostMessage

참조

WM_CTLCOLORDLG

WM_INITDIALOG