Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erstellt mithilfe der angegebenen Erstellungsparameter ein Fenster mit dem zugehörigen Handle.
Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)
Syntax
'Declaration
Public Overridable Sub CreateHandle ( _
cp As CreateParams _
)
'Usage
Dim instance As NativeWindow
Dim cp As CreateParams
instance.CreateHandle(cp)
public virtual void CreateHandle (
CreateParams cp
)
public:
virtual void CreateHandle (
CreateParams^ cp
)
public void CreateHandle (
CreateParams cp
)
public function CreateHandle (
cp : CreateParams
)
Parameter
- cp
Ein CreateParams, das die Erstellungsparameter für dieses Fenster angibt.
Ausnahmen
| Ausnahmetyp | Bedingung |
|---|---|
Das Betriebssystem verfügte nicht über ausreichende Ressourcen zum Erstellen des systemeigenen Fensters. |
|
Die systemeigene Win32-API konnte das angegebene Fenster nicht erstellen. |
|
Das Handle des aktuellen systemeigenen Fensters wurde bereits zugeordnet, d. h., die Eigenschaft Handle ist ungleich Zero. |
Hinweise
Der cp-Parameter gibt die Werte an, die an die systemeigene CreateWindowEx-Win32-Methode übergeben werden, um ein Fenster und dessen Handle zu erstellen.
Wenn das ClassName-Feld nicht NULL (Nothing in Visual Basic) ist, erbt das neu erstellte Fensterhandle von der angegebenen Klasse. Wenn ClassName z. B. auf BUTTON festgelegt wurde, beruht das neu erstellte Fenster auf der BUTTON-Win32-Fensterklasse. Die Param-Eigenschaft des ClassName-Objekts muss entweder gleich NULL (Nothing in Visual Basic) sein oder auf eine Instanz einer Klasse verweisen, die als Struktur deklariert ist.
Dieser Code ist ein Auszug aus dem Beispiel in der Übersicht zur NativeWindow-Klasse. Teile des Codes wurden zur besseren Übersicht ausgelassen. Den vollständigen Code finden Sie unter NativeWindow.
Hinweis
Der bereitgestellte Klassenname wird im Betriebssystem registriert.
Beispiel
Das folgende Codebeispiel veranschaulicht das Erstellen eines Fensters mit dem Namen einer bestimmten Fensterklasse des Betriebssystems. Im Beispiel wird dafür eine Klasse erstellt, die von NativeWindow erbt.
Die MyNativeWindow-Klasse erstellt ein neues Fenster, wobei der ClassName auf BUTTON festgelegt wird. Dadurch wird ein Win32-Schaltflächenfenster erstellt. Position und Größe der Schaltfläche werden zusammen mit weiteren spezifischen Fensterstilen festgelegt. Die Klasse veranschaulicht das Verwenden der CreateHandle-Methode und das Überschreiben der WndProc-Methode zum Abfangen der empfangenen Fenstermeldungen. Im Beispiel wird nach der WM_ACTIVATEAPP-Meldung gesucht. In einem echten Programm kann sie durch eine spezifische Fenstermeldung für den erstellten Typ ersetzt werden.
Hinweis
Einige Steuerelementtypen senden die Fenstermeldungen nicht an das Fenster, sondern 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.
/** @attribute SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.UnmanagedCode)
*/
public class MyNativeWindow extends NativeWindow
{
// Constant values were found in the "windows.h" header file.
private int WS_CHILD = 0x40000000;
private int WS_VISIBLE = 0x10000000;
private int WM_ACTIVATEAPP = 0x1C;
private int windowHandle;
public MyNativeWindow(Form parent)
{
CreateParams cp = new CreateParams();
// Fill in the CreateParams details.
cp.set_Caption("Click here");
cp.set_ClassName("Button");
// Set the position on the form
cp.set_X(100);
cp.set_Y(100);
cp.set_Height(100);
cp.set_Width(100);
// Specify the form as the parent.
cp.set_Parent(parent.get_Handle());
// Create as a child of the specified parent
cp.set_Style(WS_CHILD | WS_VISIBLE);
// Create the actual window
this.CreateHandle(cp);
} //MyNativeWindow
// Listen to when the handle changes to keep the variable in sync
protected void OnHandleChange()
{
windowHandle = this.get_Handle().ToInt32();
} //OnHandleChange
protected void WndProc(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.
if (m.get_Msg() == WM_ACTIVATEAPP) {
// Do something here in response to messages
}
super.WndProc(m);
} //WndProc
} //MyNativeWindow
.NET Framework-Sicherheit
- UIPermission für alle sicheren Teilfenster zum Aufrufen dieser Methode. Zugeordnete Enumeration: UIPermissionWindow.SafeSubWindows
- UIPermission zum Erstellen eines Fensters der obersten Ebene. Diese Berechtigung ist nur erforderlich, wenn der Fensterstil kein untergeordnetes Element darstellt oder kein übergeordnetes Element für das Fenster vorhanden ist. Zugeordnete Enumeration: UIPermissionWindow.SafeTopLevelWindows
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
NativeWindow-Klasse
NativeWindow-Member
System.Windows.Forms-Namespace
CreateParams-Klasse
Handle
AssignHandle
DestroyHandle
Finalize
ReleaseHandle