NativeWindow.OnHandleChange Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt eine Benachrichtigungsmethode an, die aufgerufen wird, wenn das Handle für ein Fenster geändert wird.
protected:
virtual void OnHandleChange();
protected virtual void OnHandleChange ();
abstract member OnHandleChange : unit -> unit
override this.OnHandleChange : unit -> unit
Protected Overridable Sub OnHandleChange ()
Beispiele
Im folgenden Codebeispiel wird das Erstellen eines Fensters mit einem bestimmten Namen der Betriebssystemfensterklasse veranschaulicht. Im Beispiel wird eine Klasse erstellt, von der dies ererbt NativeWindow wird. Im Beispiel wird auch die Außerkraftsetzung der Methode veranschaulicht, die benachrichtigt werden soll, wenn sich die OnHandleChange Handle Änderungen ändern.
Die MyNativeWindow
Klasse erstellt ein neues Fenster mit dem ClassName Satz auf BUTTON
. Dadurch wird ein Win32-Schaltflächenfenster erstellt. Die Position und Größe der Schaltfläche wird festgelegt, zusammen mit dem Angeben zusätzlicher Fensterformatvorlagen. Die Klasse veranschaulicht, wie Sie die Methode verwenden und die Methode außer Kraft setzen, um Fensternachrichten abzufangen, die CreateHandle WndProc empfangen werden. Obwohl das Beispiel nach der WM_ACTIVATEAPP Nachricht sucht, kann dies in einem echten Programm durch Fensternachrichten ersetzt werden, die dem erstellten Typ spezifisch sind.
Dieser Code ist ein Auszug aus dem Beispiel, das in der NativeWindow Klassenübersicht gezeigt wird. Einige Code werden nicht zum Zweck der Kürze angezeigt. Weitere Informationen finden Sie NativeWindow in der gesamten Codeauflistung.
Hinweis
Einige Steuerelementtypen senden ihre Fensternachrichten an das übergeordnete Fenster anstelle des Fensters. Weitere Informationen finden Sie im Windows-Plattform-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.
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
Hinweise
Diese Methode wird aufgerufen, wenn der Wert der Handle Eigenschaft geändert wurde.
Hinweise für Vererber
Überschreiben Sie diese Methode, um Änderungen zu verfolgen, die an dem Fensterhandle vorgenommen werden.