Partager via


CommonDialog.HookProc(IntPtr, Int32, IntPtr, IntPtr) Méthode

Définition

Définit la procédure de raccordement d'une boîte de dialogue commune devant être substituée pour qu'une fonctionnalité spécifique soit ajoutée à une boîte de dialogue commune.

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

Paramètres

hWnd
IntPtr

nativeint

Handle de la fenêtre de la boîte de dialogue.

msg
Int32

Réception du message.

wparam
IntPtr

nativeint

Informations supplémentaires sur le message.

lparam
IntPtr

nativeint

Informations supplémentaires sur le message.

Retours

IntPtr

nativeint

Valeur nulle lorsque la procédure de la boîte de dialogue par défaut prend en charge le message et valeur non nulle lorsque la procédure de la boîte de dialogue par défaut ignore le message.

Exemples

L’exemple de code suivant montre comment remplacer la HookProc méthode. L’exemple se compose d’une classe qui hérite de la CommonDialog classe. Dans le remplacement de HookProc la classe, l’exemple évalue le paramètre de msg la méthode par rapport aux valeurs constantes pour des messages Windows particuliers. Si le msg paramètre est égal à la constante spécifiée, l’exemple écrit la sortie de trace identifiant le message Windows passé à la HookProc méthode. Cet exemple suppose que la classe dans laquelle la HookProc méthode est déclarée hérite de la CommonDialog classe.

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

Remarques

Une procédure de raccordement est un mécanisme par lequel une fonction peut intercepter les événements avant qu’elles n’atteignent une application. Lorsque vous remplacez la HookProc méthode d’une CommonDialog classe, le système d’exploitation appelle votre remplacement de la fonction pour publier les messages du système d’exploitation dans la fenêtre.

Par défaut, la procédure de raccordement centre la boîte de dialogue à l’écran en réponse à un WM_INITDIALOG message.

Notes pour les héritiers

L’héritage des classes peut remplacer cette méthode pour ajouter des fonctionnalités spécifiques à une boîte de dialogue commune. En cas de HookProc(IntPtr, Int32, IntPtr, IntPtr) substitution dans une classe dérivée, veillez à appeler la méthode de la classe de HookProc(IntPtr, Int32, IntPtr, IntPtr) base.

S’applique à