NativeWindow.AssignHandle(IntPtr) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přiřadí popisovač k tomuto okně.
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
Popisovač, který chcete přiřadit k tomuto okně.
Výjimky
Toto okno už má popisovač.
Nelze načíst proceduru windows přidruženého nativního okna.
Příklady
Následující příklad kódu ukazuje zachycení zpráv okna operačního systému v procedurě okna. Příklad vytvoří třídu, která zdědí, aby NativeWindow toho dosáhla.
MyNativeWindowListener Třída se zachytí do okna procedury formuláře předané do konstruktoru a přepíše metodu WndProc tak, aby zachycuje WM_ACTIVATEAPP zprávu okna. Třída demonstruje použití AssignHandle a ReleaseHandle metody k identifikaci, které okno popisovač NativeWindow bude používat. Popisovač se přiřadí na Control.HandleCreated základě událostí a Control.HandleDestroyed událostí. Při přijetí zprávy okna WM_ACTIVATEAPP třída volá metodu form1.ApplicationActivated .
Tento kód je výňatek z příkladu uvedeného v přehledu NativeWindow třídy. Pro účely stručnosti se nezobrazuje nějaký kód. Podívejte se NativeWindow na celý výpis kódu.
// 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
Poznámky
WndProc zachytí zprávy okna odeslané do parametru handle . Slouží ReleaseHandle k obnovení procedury okna popisovače na výchozí proceduru okna.
Metoda AssignHandle volá metodu OnHandleChange , která označuje, že hodnota Handle vlastnosti se změnila.
Poznámka:
Popisovač, který se má přiřadit, nemůže být v jiném procesu aplikace.