NativeWindow.AssignHandle(IntPtr) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przypisuje uchwyt do tego okna.
public:
void AssignHandle(IntPtr handle);
public void AssignHandle(IntPtr handle);
member this.AssignHandle : nativeint -> unit
Public Sub AssignHandle (handle As IntPtr)
Parametry
- handle
-
IntPtr
nativeint
Uchwyt do przypisania do tego okna.
Wyjątki
To okno ma już uchwyt.
Nie można pobrać procedury okien dla skojarzonego okna natywnego.
Przykłady
Poniższy przykład kodu przedstawia przechwytywanie komunikatów okien systemu operacyjnego w procedurze okna. W tym przykładzie zostanie utworzona klasa dziedziczona z NativeWindow w celu osiągnięcia tego celu.
Klasa MyNativeWindowListener podłącza się do procedury okna formularza przekazanego do konstruktora i zastępuje WndProc metodę przechwytywania komunikatu WM_ACTIVATEAPP okna. Klasa demonstruje użycie AssignHandle metod i ReleaseHandle w celu określenia, które okno będzie NativeWindow używane. Dojście jest przypisywane na podstawie zdarzeń Control.HandleCreated i .Control.HandleDestroyed Po odebraniu komunikatu WM_ACTIVATEAPP okna klasa wywołuje metodę form1.ApplicationActivated .
Ten kod jest fragmentem przykładu pokazanego w przeglądzie NativeWindow klasy. Niektóre kody nie są wyświetlane w celu zwięzłości. Zobacz, aby zapoznać się NativeWindow z całą listą kodu.
// NativeWindow class to listen to operating system messages.
ref class MyNativeWindowListener: public NativeWindow
{
private:
// Constant value was found in the S"windows.h" header file.
literal int WM_ACTIVATEAPP = 0x001C;
Form1^ parent;
public:
MyNativeWindowListener( Form1^ parent )
{
parent->HandleCreated += gcnew EventHandler( this, &MyNativeWindowListener::OnHandleCreated );
parent->HandleDestroyed += gcnew EventHandler( this, &MyNativeWindowListener::OnHandleDestroyed );
this->parent = parent;
}
internal:
// Listen for the control's window creation and then hook into it.
void OnHandleCreated( Object^ sender, EventArgs^ /*e*/ )
{
// Window is now created, assign handle to NativeWindow.
AssignHandle( (dynamic_cast<Form1^>(sender))->Handle );
}
void OnHandleDestroyed( Object^ /*sender*/, EventArgs^ /*e*/ )
{
// Window was destroyed, release hook.
ReleaseHandle();
}
protected:
virtual void WndProc( Message %m ) override
{
// Listen for operating system messages
switch ( m.Msg )
{
case WM_ACTIVATEAPP:
// Notify the form that this message was received.
// Application is activated or deactivated,
// based upon the WParam parameter.
parent->ApplicationActived( ((int)m.WParam != 0) );
break;
}
NativeWindow::WndProc( m );
}
};
// NativeWindow class to listen to operating system messages.
internal class MyNativeWindowListener : NativeWindow
{
// Constant value was found in the "windows.h" header file.
private const int WM_ACTIVATEAPP = 0x001C;
private Form1 parent;
public MyNativeWindowListener(Form1 parent)
{
parent.HandleCreated += new EventHandler(this.OnHandleCreated);
parent.HandleDestroyed += new EventHandler(this.OnHandleDestroyed);
this.parent = parent;
}
// Listen for the control's window creation and then hook into it.
internal void OnHandleCreated(object sender, EventArgs e)
{
// Window is now created, assign handle to NativeWindow.
AssignHandle(((Form1)sender).Handle);
}
internal void OnHandleDestroyed(object sender, EventArgs e)
{
// Window was destroyed, release hook.
ReleaseHandle();
}
protected override void WndProc(ref Message m)
{
// Listen for operating system messages
switch (m.Msg)
{
case WM_ACTIVATEAPP:
// Notify the form that this message was received.
// Application is activated or deactivated,
// based upon the WParam parameter.
parent.ApplicationActivated(((int)m.WParam != 0));
break;
}
base.WndProc(ref m);
}
}
' NativeWindow class to listen to operating system messages.
Friend Class MyNativeWindowListener
Inherits NativeWindow
' Constant value was found in the "windows.h" header file.
Private Const WM_ACTIVATEAPP As Integer = &H1C
Private parent As Form1
Public Sub New(ByVal parent As Form1)
AddHandler parent.HandleCreated, AddressOf Me.OnHandleCreated
AddHandler parent.HandleDestroyed, AddressOf Me.OnHandleDestroyed
Me.parent = parent
End Sub
' Listen for the control's window creation and hook into it.
Private Sub OnHandleCreated(ByVal sender As Object, ByVal e As EventArgs)
' Window is now created, assign handle to NativeWindow.
AssignHandle(CType(sender, Form).Handle)
End Sub
Private Sub OnHandleDestroyed(ByVal sender As Object, ByVal e As EventArgs)
' Window was destroyed, release hook.
ReleaseHandle()
End Sub
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Sub WndProc(ByRef m As Message)
' Listen for operating system messages
Select Case (m.Msg)
Case WM_ACTIVATEAPP
' Notify the form that this message was received.
' Application is activated or deactivated,
' based upon the WParam parameter.
parent.ApplicationActivated(m.WParam.ToInt32() <> 0)
End Select
MyBase.WndProc(m)
End Sub
End Class
Uwagi
WndProc przechwytuje komunikaty okna wysyłane do parametru handle . Użyj ReleaseHandle polecenia , aby zresetować procedurę okna uchwytu do domyślnej procedury okna.
Metoda AssignHandle wywołuje metodę OnHandleChange , aby wskazać, że wartość Handle właściwości uległa zmianie.
Uwaga / Notatka
Dojście do przypisania nie może być w innym procesie aplikacji.