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.
Gibt eine Benachrichtigungsmethode an, die aufgerufen wird, wenn das Handle für ein Fenster geändert wird.
Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)
Syntax
'Declaration
Protected Overridable Sub OnHandleChange
'Usage
Me.OnHandleChange
protected virtual void OnHandleChange ()
protected:
virtual void OnHandleChange ()
protected void OnHandleChange ()
protected function OnHandleChange ()
Hinweise
Diese Methode wird aufgerufen, wenn der Wert der Handle-Eigenschaft geändert wurde.
Hinweise für Erben Überschreiben Sie diese Methode, um Änderungen des Fensterhandles nachzuverfolgen.
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. Das Beispiel veranschaulicht auch das Überschreiben der OnHandleChange-Methode, die benachrichtigt wird, wenn das Handle geändert wird.
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.
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
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
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
Handle
AssignHandle
CreateHandle
DestroyHandle
ReleaseHandle
WndProc