NativeWindow.CreateHandle(CreateParams) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen oluşturma parametreleriyle bir pencere ve tutamacını oluşturur.
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)
Parametreler
- cp
- CreateParams
CreateParams Bu pencere için oluşturma parametrelerini belirten bir.
Özel durumlar
Yerel pencere oluşturulmaya çalışıldığında işletim sistemi kaynakları tükendi.
Yerel Windows API'sinde belirtilen pencere oluşturulamadı.
Geçerli yerel pencerenin tanıtıcısı zaten atanmıştır; açıklamasında Handle özelliği ile Zeroeşit değildir.
Örnekler
Aşağıdaki kod örneği, belirli bir işletim sistemi penceresi sınıf adıyla pencere oluşturmayı gösterir. Örnek, bunu gerçekleştirmek için öğesinden NativeWindow devralan bir sınıf oluşturur.
sınıfı, MyNativeWindow
olarak ayarlanmış BUTTON
yeni bir pencere ClassName oluşturur. Bu işlem bir Win32 düğme penceresi oluşturur. Düğmenin konumu ve boyutu ayarlanır ve ek pencere stilleri belirtilir. sınıfı, alınan pencere iletilerini kesmek için yönteminin nasıl kullanılacağını CreateHandle ve yönteminin nasıl geçersiz kılındığını WndProc gösterir. Örnekte WM_ACTIVATEAPP iletisi aransa da, bu gerçek bir programda oluşturulan türe özgü pencere iletileriyle değiştirilebilir.
Not
Bazı denetim türleri pencere iletilerini pencere yerine pencere üst öğesine gönderir. Daha fazla bilgi için Windows Platform SDK'sı bakın.
// 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
Açıklamalar
parametresi, cp
bir pencere ve tanıtıcısı oluşturmak için yerel Win32 CreateWindowEx
yöntemine geçirilen değerleri belirtir.
ClassName Alanı olmadığındanull
, yeni oluşturulan pencere tanıtıcısı belirtilen sınıftan devralır. Örneğin, olarak ayarlanırsa ClassNameBUTTON
, yeni oluşturulan pencere Win32 BUTTON
pencere sınıfını temel alır.
Param nesnesinin ClassName özelliği, yapı olarak bildirilen bir sınıfın örneğine başvurmalıdır null
veya olmalıdır.
Bu kod, sınıfa genel bakış bölümünde gösterilen örnekten NativeWindow bir alıntıdır. Bazı kodlar kısalık amacıyla gösterilmez. Kod listesinin tamamı için bkz NativeWindow .
Not
Sağlanan sınıf adı işletim sistemine kaydedilir.