FontDialog.HookProc(IntPtr, Int32, IntPtr, IntPtr) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定共用對話框的掛鉤程序,該程序被覆寫以增加特定功能。
protected:
override IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam);
protected override IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam);
override this.HookProc : nativeint * int * nativeint * nativeint -> nativeint
Protected Overrides 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
關於該訊息的額外資訊。
傳回
nativeint
若預設對話框程序處理訊息,則為零;若預設對話框程序忽略該訊息,則為非零值。
範例
以下程式碼範例示範如何覆寫此 HookProc 方法。 範例包含一個繼承該 FontDialog 類別的類別。 在類別的 HookProc 覆寫中,範例會針對特定 Windows 訊息的常數值評估方法的 msg 參數。 若 msg 參數等於指定常數,範例會寫入追蹤輸出,識別傳遞給 HookProc 方法的Windows訊息。 此範例要求方法所宣告的類別 HookProc 繼承該 FontDialog 類別。
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 類別的方法 CommonDialog 時,作業系統會呼叫你覆蓋該函式,將作業系統訊息貼入視窗。
給繼承者的注意事項
在導出類別中覆 HookProc(IntPtr, Int32, IntPtr, IntPtr) 寫時,務必呼叫基底類別的方法 HookProc(IntPtr, Int32, IntPtr, IntPtr) 。