NativeWindow.Handle Propiedad

Definición

Obtiene el identificador de esta ventana.

public IntPtr Handle { get; }

Valor de propiedad

IntPtr

Si es correcto, obtiene un objeto IntPtr que representa el identificador de la ventana Win32 nativa asociada; en caso contrario, si ningún identificador está asociado con la ventana, devuelve 0.

Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear una ventana con un nombre de clase de ventana de sistema operativo específico. En el ejemplo se crea una clase que hereda de NativeWindow para lograrlo. En el ejemplo también se muestra cómo invalidar el OnHandleChange método que se va a notificar cuando cambia Handle .

La MyNativeWindow clase crea una nueva ventana con el ClassName establecido en BUTTON. Esto crea una ventana de botón Win32. Se establece la ubicación y el tamaño del botón, junto con la especificación de estilos de ventana adicionales. La clase muestra cómo usar el CreateHandle método e invalidar el WndProc método para interceptar los mensajes de ventana que se reciben. Aunque el ejemplo busca el mensaje de WM_ACTIVATEAPP, esto podría reemplazarse en un programa real por mensajes de ventana específicos del tipo creado.

Nota

Algunos tipos de control envían sus mensajes de ventana al elemento primario de la ventana en lugar de a la ventana. Consulte la SDK de Plataforma para Windows para obtener más información.

// MyNativeWindow class to create a window given a class name.
internal class MyNativeWindow : NativeWindow
{

    // Constant values were found in the "windows.h" header file.
    private const int WS_CHILD = 0x40000000,
                      WS_VISIBLE = 0x10000000,
                      WM_ACTIVATEAPP = 0x001C;

    private int windowHandle;

    public MyNativeWindow(Form parent)
    {

        CreateParams cp = new CreateParams();

        // Fill in the CreateParams details.
        cp.Caption = "Click here";
        cp.ClassName = "Button";

        // Set the position on the form
        cp.X = 100;
        cp.Y = 100;
        cp.Height = 100;
        cp.Width = 100;

        // Specify the form as the parent.
        cp.Parent = parent.Handle;

        // Create as a child of the specified parent
        cp.Style = WS_CHILD | WS_VISIBLE;

        // Create the actual window
        this.CreateHandle(cp);
    }

    // Listen to when the handle changes to keep the variable in sync
    protected override void OnHandleChange()
    {
        windowHandle = (int)this.Handle;
    }

    protected override void WndProc(ref Message m)
    {
        // Listen for messages that are sent to the button window. Some messages are sent
        // to the parent window instead of the button's window.

        switch (m.Msg)
        {
            case WM_ACTIVATEAPP:
                // Do something here in response to messages
                break;
        }
        base.WndProc(ref m);
    }
}

Comentarios

Use este método al llamar a métodos de la API de Windows que requieren un identificador para una ventana o un control.

Se aplica a

Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Consulte también