FontDialog.HookProc(IntPtr, Int32, IntPtr, IntPtr) Método

Definición

Especifica el procedimiento de enlace de cuadro de diálogo común que se invalida para agregar funcionalidad específica a un cuadro de diálogo común.

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

Parámetros

hWnd
IntPtr

nativeint

Identificador de la ventana del cuadro de diálogo.

msg
Int32

Mensaje que se recibe.

wparam
IntPtr

nativeint

Información adicional sobre el mensaje.

lparam
IntPtr

nativeint

Información adicional sobre el mensaje.

Devoluciones

IntPtr

nativeint

Valor cero si el procedimiento predeterminado del cuadro de diálogo procesa el mensaje; un valor distinto de cero si el procedimiento del cuadro de diálogo predeterminado omite el mensaje.

Ejemplos

En el ejemplo de código siguiente se muestra cómo invalidar el HookProc método . El ejemplo consta de una clase que hereda la FontDialog clase . En la invalidación HookProc de la clase, en el ejemplo se evalúa el parámetro msg del método con valores constantes para determinados mensajes Windows. Si el parámetro msg es igual a la constante especificada, el ejemplo escribe la salida de seguimiento que identifica el mensaje de Windows que se pasó al método HookProc. En este ejemplo se requiere que la clase en la que se declare el HookProc método hereda la FontDialog clase .

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

Comentarios

Un procedimiento de enlace es un mecanismo por el que una función puede interceptar eventos antes de llegar a una aplicación. Al invalidar el CommonDialog.HookProc método de una CommonDialog clase, el sistema operativo invoca la invalidación de la función para publicar mensajes del sistema operativo en la ventana.

Notas a los desarrolladores de herederos

Cuando se invalide HookProc(IntPtr, Int32, IntPtr, IntPtr) en una clase derivada, asegúrese de llamar al método de HookProc(IntPtr, Int32, IntPtr, IntPtr) la clase base.

Se aplica a

Consulte también