CommonDialog.HookProc(IntPtr, Int32, IntPtr, IntPtr) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
일반 대화 상자에 특정 기능을 추가하도록 재정의된 일반 대화 상자의 후크 프로시저를 정의합니다.
protected:
virtual IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam);
protected virtual IntPtr HookProc (IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam);
abstract member HookProc : nativeint * int * nativeint * nativeint -> nativeint
override this.HookProc : nativeint * int * nativeint * nativeint -> nativeint
Protected Overridable Function HookProc (hWnd As IntPtr, msg As Integer, wparam As IntPtr, lparam As IntPtr) As IntPtr
매개 변수
- hWnd
-
IntPtr
nativeint
대화 상자 창에 대한 핸들입니다.
- msg
- Int32
받는 메시지입니다.
- wparam
-
IntPtr
nativeint
메시지에 대한 추가 정보입니다.
- lparam
-
IntPtr
nativeint
메시지에 대한 추가 정보입니다.
반환
-
IntPtr
nativeint
기본 대화 상자 프로시저가 메시지를 처리하면 0 값이고 메시지를 무시하면 0이 아닌 값입니다.
예제
다음 코드 예제에서는 메서드를 재정의하는 방법을 보여 줍니다 HookProc . 이 예제는 클래스를 상속하는 클래스로 CommonDialog 구성됩니다. 클래스 재정의 HookProc 에서 예제는 특정 Windows 메시지에 대한 상수 값에 대해 메서드의 msg
매개 변수를 평가합니다. 매개 변수가 msg
지정된 상수와 같으면 이 예제에서는 메서드에 전달된 Windows 메시지를 식별하는 추적 출력을 HookProc 씁니다. 이 예제에서는 메서드가 선언된 클래스가 HookProc 클래스를 상속한다고 가정합니다 CommonDialog .
private:
// Defines the constants for Windows messages.
literal int WM_SETFOCUS = 0x0007;
literal int WM_INITDIALOG = 0x0110;
literal int WM_LBUTTONDOWN = 0x0201;
literal int WM_RBUTTONDOWN = 0x0204;
literal int WM_MOVE = 0x0003;
protected:
// Overrides the base class hook procedure...
[SecurityPermission(SecurityAction::Demand, Flags=SecurityPermissionFlag::UnmanagedCode)]
virtual IntPtr HookProc( IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam ) override
{
// Evaluates the message parameter to determine the user action.
#if defined(TRACE)
switch ( msg )
{
case WM_INITDIALOG:
System::Diagnostics::Trace::Write( "The WM_INITDIALOG message was received." );
break;
case WM_SETFOCUS:
System::Diagnostics::Trace::Write( "The WM_SETFOCUS message was received." );
break;
case WM_LBUTTONDOWN:
System::Diagnostics::Trace::Write( "The WM_LBUTTONDOWN message was received." );
break;
case WM_RBUTTONDOWN:
System::Diagnostics::Trace::Write( "The WM_RBUTTONDOWN message was received." );
break;
case WM_MOVE:
System::Diagnostics::Trace::Write( "The WM_MOVE message was received." );
break;
}
#endif
// Always call the base class hook procedure.
return FontDialog::HookProc( hWnd, msg, wParam, lParam );
}
// Defines the constants for Windows messages.
const int WM_SETFOCUS = 0x0007;
const int WM_INITDIALOG = 0x0110;
const int WM_LBUTTONDOWN = 0x0201;
const int WM_RBUTTONDOWN = 0x0204;
const int WM_MOVE = 0x0003;
// Overrides the base class hook procedure...
protected override IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
{
// Evaluates the message parameter to determine the user action.
switch(msg)
{
case WM_INITDIALOG:
System.Diagnostics.Trace.Write("The WM_INITDIALOG message was received.");
break;
case WM_SETFOCUS:
System.Diagnostics.Trace.Write("The WM_SETFOCUS message was received.");
break;
case WM_LBUTTONDOWN:
System.Diagnostics.Trace.Write("The WM_LBUTTONDOWN message was received.");
break;
case WM_RBUTTONDOWN:
System.Diagnostics.Trace.Write("The WM_RBUTTONDOWN message was received.");
break;
case WM_MOVE:
System.Diagnostics.Trace.Write("The WM_MOVE message was received.");
break;
}
// Always call the base class hook procedure.
return base.HookProc(hWnd, msg, wParam, lParam);
}
' Defines the constants for Windows messages.
Const WM_SETFOCUS = &H7
Const WM_INITDIALOG = &H110
Const WM_LBUTTONDOWN = &H201
Const WM_RBUTTONDOWN = &H204
Const WM_MOVE = &H3
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Function HookProc(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
' Evaluates the message parameter to determine the user action.
Select Case msg
Case WM_INITDIALOG
System.Diagnostics.Trace.Write("The WM_INITDIALOG message was received.")
Case WM_SETFOCUS
System.Diagnostics.Trace.Write("The WM_SETFOCUS message was received.")
Case WM_LBUTTONDOWN
System.Diagnostics.Trace.Write("The WM_LBUTTONDOWN message was received.")
Case WM_RBUTTONDOWN
System.Diagnostics.Trace.Write("The WM_RBUTTONDOWN message was received.")
Case WM_MOVE
System.Diagnostics.Trace.Write("The WM_MOVE message was received.")
End Select
' Always call the base class hook procedure.
Return MyBase.HookProc(hWnd, msg, wParam, lParam)
End Function
설명
후크 프로시저는 함수는 애플리케이션에 도달 하기 전에 이벤트를 가로챌 수 있습니다 하는 메커니즘입니다. 클래스에 대한 메서드를 CommonDialog 재정의 HookProc 하면 운영 체제에서 함수 재정의를 호출하여 운영 체제 메시지를 창에 게시합니다.
기본적으로 후크 프로시저는 메시지에 대한 응답으로 대화 상자를 화면에 가운데에 옵니다 WM_INITDIALOG
.
상속자 참고
클래스를 상속하면 이 메서드를 재정의하여 공통 대화 상자에 특정 기능을 추가할 수 있습니다. 재정의 하는 경우 HookProc(IntPtr, Int32, IntPtr, IntPtr) 파생된 클래스에서 호출 해야 기본 클래스의 HookProc(IntPtr, Int32, IntPtr, IntPtr) 메서드.