NativeWindow.CreateHandle(CreateParams) Methode

Definitie

Hiermee maakt u een venster en de bijbehorende ingang met de opgegeven parameters voor het maken.

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)

Parameters

cp
CreateParams

Een CreateParams die de parameters voor het maken van dit venster aangeeft.

Uitzonderingen

Het besturingssysteem heeft onvoldoende resources bij het maken van het systeemeigen venster.

De systeemeigen Windows-API kan het opgegeven venster niet maken.

De ingang van het huidige systeemeigen venster is al toegewezen; in de toelichting is de Handle eigenschap niet gelijk aan Zero.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een venster maakt met een specifieke naam van de besturingssysteemvensterklasse. In het voorbeeld wordt een klasse gemaakt van waaruit dit wordt overgenomen NativeWindow .

De MyNativeWindow klasse maakt een nieuw venster met de ClassName set op BUTTON. Hiermee maakt u een Win32-knopvenster. De locatie en grootte van de knop worden ingesteld, samen met het opgeven van extra vensterstijlen. De klasse laat zien hoe u de CreateHandle methode gebruikt en de WndProc methode overschrijft om vensterberichten te onderscheppen die worden ontvangen. Hoewel in het voorbeeld naar het WM_ACTIVATEAPP bericht wordt gezocht, kan dit in een echt programma worden vervangen door vensterberichten die specifiek zijn voor het type dat is gemaakt.

Note

Sommige besturingstypen verzenden hun vensterberichten naar het bovenliggende venster in plaats van het venster. Zie de Windows Platform SDK voor meer informatie.

// 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

Opmerkingen

De cp parameter geeft de waarden op die worden doorgegeven aan de systeemeigen Win32-methode CreateWindowEx om een venster en de bijbehorende ingang te maken.

Wanneer het ClassName veld niet nullis, neemt de zojuist gemaakte venstergreep over van de opgegeven klasse. Als dit bijvoorbeeld is ingesteldClassName, BUTTON is het zojuist gemaakte venster gebaseerd op de Win32-vensterklasseBUTTON. De Param eigenschap van het ClassName object moet een null exemplaar zijn van een klasse die als een structuur is gedeclareerd of ernaar verwijzen.

Deze code is een fragment uit het voorbeeld dat wordt weergegeven in het NativeWindow klassenoverzicht. Sommige code wordt niet weergegeven met het oog op beknoptheid. Zie NativeWindow voor de hele codevermelding.

Note

De opgegeven klassenaam is geregistreerd bij het besturingssysteem.

Van toepassing op

Zie ook