다음을 통해 공유


LPOFNHOOKPROC 콜백 함수(commdlg.h)

[Windows Vista부터 일반 항목 대화 상자로 열기저장일반 대화 상자가 대체되었습니다. 공통 대화 상자 라이브러리에서 이러한 대화 상자 대신 공통 항목 대화 상자 API를 사용하는 것이 좋습니다.]

대화 상자에서 보낸 알림 메시지를 받습니다. 또한 함수는 자식 대화 상자 템플릿을 지정하여 정의한 추가 컨트롤에 대한 메시지를 받습니다. OFNHookProc 후크 프로시저는 Explorer 스타일 열기다른 이름으로 저장 대화 상자와 함께 사용되는 애플리케이션 정의 또는 라이브러리 정의 콜백 함수입니다.

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

구문

LPOFNHOOKPROC Lpofnhookproc;

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

매개 변수

unnamedParam1

다른 이름으로 열기 또는 다른 이름으로 저장 대화 상자의 자식 대화 상자에 대한 핸들입니다. GetParent 함수를 사용하여 열기 또는 다른 이름으로 저장 대화 상자에 대한 핸들을 가져옵니다.

unnamedParam2

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

unnamedParam3

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

unnamedParam4

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

반환 값

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

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

CDN_SHAREVIOLATIONCDN_FILEOK 알림 메시지의 경우 후크 프로시저는 SetWindowLong 함수를 사용하여 0이 아닌 DWL_MSGRESULT 값을 설정했음을 나타내기 위해 0이 아닌 값을 반환해야 합니다.

설명

열기 또는 다른 이름으로 저장 대화 상자를 만들 때 OFN_EXPLORER 플래그를 지정하지 않고 후크 프로시저를 원하는 경우 이전 스타일의 OFNHookProcOldStyle 후크 프로시저를 사용해야 합니다. 이 경우 대화 상자에는 이전 스타일의 사용자 인터페이스가 있습니다.

GetOpenFileName 또는 GetSaveFileName 함수를 사용하여 Explorer 스타일 열기 또는 다른 이름으로 저장 대화 상자를 만드는 경우 OFNHookProc 후크 프로시저를 제공할 수 있습니다. 후크 프로시저를 사용하도록 설정하려면 대화 상자 만들기 함수에 전달한 OPENFILENAME 구조를 사용합니다. lpfnHook 멤버의 후크 프로시저에 대한 포인터를 지정하고 Flags 멤버에서 OFN_ENABLEHOOK 플래그를 지정합니다.

Explorer 스타일 일반 대화 상자에 대한 후크 프로시저를 제공하는 경우 시스템은 기본 대화 상자의 자식인 대화 상자를 만듭니다. 후크 프로시저는 자식 대화 상자의 대화 프로시저 역할을 합니다. 이 자식 대화 상자는 OPENFILENAME 구조에서 지정한 템플릿을 기반으로 하거나 템플릿이 지정되지 않은 경우 기본 자식 대화 상자입니다. 자식 대화 상자는 기본 대화 프로시저가 WM_INITDIALOG 메시지를 처리할 때 만들어집니다. 자식 대화 상자가 자체 WM_INITDIALOG 메시지를 처리한 후 기본 대화 프로시저는 필요한 경우 표준 컨트롤을 이동하여 자식 대화 상자의 추가 컨트롤을 위한 공간을 만듭니다. 그런 다음 시스템은 CDN_INITDONE 알림 메시지를 후크 프로시저로 보냅니다.

후크 프로시저는 기본 대화 상자의 표준 컨트롤에 대한 메시지를 수신하지 않습니다. 표준 컨트롤을 서브클래스할 수 있지만 애플리케이션을 이후 버전과 호환되지 않을 수 있으므로 권장되지 않습니다. 그러나 Explorer 스타일 일반 대화 상자는 후크 프로시저가 대화 상자를 모니터링하고 제어하는 데 사용할 수 있는 메시지 집합을 제공합니다. 여기에는 대화 상자에서 보낸 알림 메시지 집합과 대화 상자에서 정보를 검색하기 위해 보낼 수 있는 메시지가 포함됩니다. 이러한 메시지의 전체 목록은 Explorer 스타일 후크 프로시저를 참조하세요.

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

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

요구 사항

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

추가 정보

일반 대화 상자 라이브러리

개념

GetOpenFileName

GetSaveFileName

OFNHookProcOldStyle

OPENFILENAME

참조