CommonDialog.HookProc(IntPtr, Int32, IntPtr, IntPtr) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Definiert die Hookprozedur für Standarddialogfelder, die überschrieben wird, um einem Standarddialogfeld spezifische Funktionen hinzuzufügen.
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
Parameter
- hWnd
-
IntPtr
nativeint
Das Handle für das Dialogfeldfenster.
- msg
- Int32
Die empfangene Meldung.
- wparam
-
IntPtr
nativeint
Zusätzliche Informationen zur Meldung.
- lparam
-
IntPtr
nativeint
Zusätzliche Informationen zur Meldung.
Gibt zurück
nativeint
Ein Wert von 0, wenn die Meldung von der Prozedur für Standarddialogfelder verarbeitet wird. Ein Wert ungleich 0, wenn die Meldung von dieser Prozedur ignoriert wird.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die -Methode überschrieben HookProc wird. Das Beispiel besteht aus einer Klasse, die die CommonDialog -Klasse erbt. In der Überschreibung der Klasse HookProc wertet das Beispiel den Parameter der Methode msg
mit konstanten Werten für bestimmte Windows-Nachrichten aus. Wenn der msg
Parameter der angegebenen Konstante entspricht, schreibt das Beispiel eine Ablaufverfolgungsausgabe, die die Windows-Nachricht identifiziert, die an die HookProc -Methode übergeben wurde. In diesem Beispiel wird davon ausgegangen, dass die Klasse, in der die HookProc -Methode deklariert ist, die CommonDialog -Klasse erbt.
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
Hinweise
Eine Hookprozedur ist ein Mechanismus, mit dem eine Funktion Ereignisse abfangen kann, bevor sie eine Anwendung erreichen. Wenn Sie die HookProc -Methode für eine CommonDialog -Klasse überschreiben, ruft das Betriebssystem Ihre Überschreibung der Funktion auf, um Betriebssystemmeldungen im Fenster zu posten.
Standardmäßig zentriert die Hookprozedur das Dialogfeld auf dem Bildschirm als Reaktion auf eine WM_INITDIALOG
Nachricht.
Hinweise für Vererber
Durch Das Erben von Klassen kann diese Methode überschrieben werden, um einem allgemeinen Dialogfeld bestimmte Funktionen hinzuzufügen. Rufen Sie beim Überschreiben HookProc(IntPtr, Int32, IntPtr, IntPtr) in einer abgeleiteten Klasse unbedingt die Methode der Basisklasse HookProc(IntPtr, Int32, IntPtr, IntPtr) auf.