Bagikan melalui


NativeWindow.CreateHandle(CreateParams) Metode

Definisi

Membuat jendela dan handelnya dengan parameter pembuatan yang ditentukan.

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

CreateParams yang menentukan parameter pembuatan untuk jendela ini.

Pengecualian

Sistem operasi kehabisan sumber daya saat mencoba membuat jendela asli.

Windows API asli tidak dapat membuat jendela yang ditentukan.

Handel jendela asli saat ini sudah ditetapkan; dalam penjelasan, Handle properti tidak sama dengan Zero.

Contoh

Contoh kode berikut menunjukkan pembuatan jendela dengan nama kelas jendela sistem operasi tertentu. Contoh membuat kelas yang mewarisi NativeWindow untuk mencapai hal ini.

Kelas MyNativeWindow membuat jendela baru dengan diatur ke ClassNameBUTTON. Ini membuat jendela tombol Win32. Lokasi dan ukuran tombol diatur, bersama dengan menentukan gaya jendela tambahan. Kelas menunjukkan cara menggunakan CreateHandle metode dan mengambil alih WndProc metode untuk mencegat pesan jendela yang diterima. Meskipun contoh mencari pesan WM_ACTIVATEAPP, ini dapat diganti dalam program nyata dengan pesan jendela khusus untuk jenis yang dibuat.

Catatan

Beberapa jenis kontrol mengirim pesan jendela mereka ke induk jendela alih-alih jendela. Lihat SDK Platform Windows untuk informasi selengkapnya.

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

Keterangan

Parameter cp menentukan nilai yang diteruskan ke metode Win32 CreateWindowEx asli untuk membuat jendela dan handelnya.

ClassName Ketika bidang tidak null, handel jendela yang baru dibuat mewarisi dari kelas yang ditentukan. Misalnya, jika ClassName diatur ke BUTTON, jendela yang baru dibuat didasarkan pada kelas jendela Win32 BUTTON . Properti ParamClassName objek harus berupa null atau mereferensikan instans kelas yang dinyatakan sebagai struktur.

Kode ini adalah kutipan dari contoh yang ditunjukkan dalam NativeWindow gambaran umum kelas. Beberapa kode tidak ditampilkan untuk tujuan keringkasan. Lihat NativeWindow untuk seluruh daftar kode.

Catatan

Nama kelas yang disediakan terdaftar dengan sistem operasi.

Berlaku untuk

Lihat juga