FontDialog.HookProc(IntPtr, Int32, IntPtr, IntPtr) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje společnou proceduru pro připojení dialogového okna, která se přepíše, aby se do běžného dialogového okna přidaly konkrétní funkce.
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
Parametry
- hWnd
-
IntPtr
nativeint
Úchyt dialogového okna.
- msg
- Int32
Zpráva, která se přijímá.
- wparam
-
IntPtr
nativeint
Další informace o zprávě
- lparam
-
IntPtr
nativeint
Další informace o zprávě
Návraty
nativeint
Nulová hodnota, pokud výchozí procedura dialogového okna zpracuje zprávu; nenulovou hodnotu, pokud výchozí procedura dialogového okna zprávu ignoruje.
Příklady
Následující příklad kódu ukazuje, jak přepsat metodu HookProc . Příklad se skládá z třídy, která dědí FontDialog třídu. V přepsání třídy HookProc příklad vyhodnocuje parametr metody msg
proti konstantním hodnotám pro konkrétní zprávy systému Windows. Pokud se msg
parametr rovná zadané konstantě, příklad zapíše výstup trasování identifikující zprávu systému Windows, která byla předána HookProc metodě. Tento příklad vyžaduje, aby třída, ve které HookProc je metoda deklarována, dědila FontDialog třídu.
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
Poznámky
Procedura hooku je mechanismus, pomocí kterého může funkce zachycovat události předtím, než se dostanou k aplikaci. Když přepíšete metodu CommonDialog.HookProcCommonDialog pro třídu, operační systém vyvolá přepsání funkce pro odeslání zpráv operačního systému do okna.
Poznámky pro dědice
Při přepsání HookProc(IntPtr, Int32, IntPtr, IntPtr) v odvozené třídě nezapomeňte volat metodu základní třídy HookProc(IntPtr, Int32, IntPtr, IntPtr) .