Freigeben über


NativeWindow.CreateHandle(CreateParams) Methode

Definition

Erstellt ein Fenster und dessen Handle mit den angegebenen Erstellungsparametern.

public:
 virtual void CreateHandle(System::Windows::Forms::CreateParams ^ cp);
public virtual void CreateHandle(System.Windows.Forms.CreateParams cp);
abstract member CreateHandle : System.Windows.Forms.CreateParams -> unit
override this.CreateHandle : System.Windows.Forms.CreateParams -> unit
Public Overridable Sub CreateHandle (cp As CreateParams)

Parameter

cp
CreateParams

Ein CreateParams Wert, der die Erstellungsparameter für dieses Fenster angibt.

Ausnahmen

Beim Versuch, das systemeigene Fenster zu erstellen, ist das Betriebssystem nicht mehr verfügbar.

Die systemeigene Windows-API konnte das angegebene Fenster nicht erstellen.

Das Handle des aktuellen systemeigenen Fensters ist bereits zugewiesen. in Erläuterung, die Handle Eigenschaft ist nicht gleich Zero.

Beispiele

Im folgenden Codebeispiel wird das Erstellen eines Fensters mit einem bestimmten Namen der Betriebssystemfensterklasse veranschaulicht. Im Beispiel wird eine Klasse erstellt, von NativeWindow der dies geerbt wird.

Die MyNativeWindow Klasse erstellt ein neues Fenster mit dem ClassName Satz auf BUTTON. Dadurch wird ein Win32-Schaltflächenfenster erstellt. Die Position und Größe der Schaltfläche wird festgelegt, zusammen mit der Angabe zusätzlicher Fensterformatvorlagen. Die Klasse veranschaulicht, wie sie die CreateHandle Methode verwenden und die WndProc Methode außer Kraft setzen, um empfangene Fenstermeldungen abzufangen. Obwohl das Beispiel nach der WM_ACTIVATEAPP Nachricht sucht, kann dies in einem echten Programm durch Fenstermeldungen ersetzt werden, die für den erstellten Typ spezifisch sind.

Hinweis

Einige Steuerelementtypen senden ihre Fenstermeldungen anstelle des Fensters an das übergeordnete Fenster. Weitere Informationen finden Sie im Windows Platform SDK.

// MyNativeWindow class to create a window given a class name.
ref class MyNativeWindow: public NativeWindow
{
private:

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

public:
   MyNativeWindow( Form^ parent )
   {
      CreateParams^ cp = gcnew 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 );
   }

protected:

   // Listen to when the handle changes to keep the variable in sync

   virtual void OnHandleChange() override
   {
      windowHandle = (int)this->Handle;
   }

   virtual void WndProc( Message % m ) override
   {
      // 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;
      }
      NativeWindow::WndProc( m );
   }
};
// 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);
    }
}
' MyNativeWindow class to create a window given a class name.
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Friend Class MyNativeWindow
    Inherits NativeWindow

    ' Constant values were found in the "windows.h" header file.
    Private Const WS_CHILD As Integer = &H40000000, _
                  WS_VISIBLE As Integer = &H10000000, _
                  WM_ACTIVATEAPP As Integer = &H1C

    Private windowHandle As Integer

    Public Sub New(ByVal parent As Form)

        Dim cp As CreateParams = 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 Or WS_VISIBLE

        ' Create the actual window
        Me.CreateHandle(cp)
    End Sub

    ' Listen to when the handle changes to keep the variable in sync
    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
    Protected Overrides Sub OnHandleChange()
        windowHandle = Me.Handle.ToInt32()
    End Sub

    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
        Protected Overrides Sub WndProc(ByRef m As Message)
        ' Listen for messages that are sent to the button window. Some messages are sent
        ' to the parent window instead of the button's window.

        Select Case (m.Msg)
            Case WM_ACTIVATEAPP
                ' Do something here in response to messages
        End Select

        MyBase.WndProc(m)
    End Sub

End Class

Hinweise

Der cp Parameter gibt die Werte an, die an die systemeigene Win32-Methode CreateWindowEx übergeben werden, um ein Fenster und dessen Handle zu erstellen.

Wenn das ClassName Feld nicht nullvorhanden ist, erbt das neu erstellte Fensterhandle von der angegebenen Klasse. Wenn beispielsweise ClassName festgelegt BUTTONist, basiert das neu erstellte Fenster auf der Win32-Fensterklasse BUTTON . Die Param Eigenschaft des ClassName Objekts muss entweder eine Instanz einer Klasse sein null oder referenzieren, die als Struktur deklariert wurde.

Dieser Code ist ein Auszug aus dem Beispiel in der NativeWindow Klassenübersicht. Einige Code werden nicht für den Zweck der Kürze angezeigt. Weitere Informationen finden Sie NativeWindow in der gesamten Codeauflistung.

Hinweis

Der angegebene Klassenname ist beim Betriebssystem registriert.

Gilt für:

Weitere Informationen