NativeWindow.AssignHandle(IntPtr) 方法   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将句柄分配给此窗口。
public:
 void AssignHandle(IntPtr handle);public void AssignHandle(IntPtr handle);member this.AssignHandle : nativeint -> unitPublic Sub AssignHandle (handle As IntPtr)参数
- handle
- 
				
				IntPtr
nativeint 
分配给此窗口的句柄。
例外
此窗口已经具有一个句柄。
未能检索关联的本机窗口的窗口过程。
示例
下面的代码示例演示如何在窗口过程中截获操作系统窗口消息。 该示例创建一个继承自 NativeWindow 的类来实现此目的。
类 MyNativeWindowListener 挂钩到传递给构造函数的窗体的窗口过程,并重写 WndProc 方法以截获 WM_ACTIVATEAPP 窗口消息。 类演示如何使用 AssignHandle 和 ReleaseHandle 方法来标识 将使用哪个窗口句柄 NativeWindow 。 句柄是根据 和 Control.HandleDestroyed 事件分配的Control.HandleCreated。 
              WM_ACTIVATEAPP收到窗口消息时,类将调用 form1.ApplicationActivated 方法。
此代码是类概述中显示的示例的 NativeWindow 摘录。 为了简洁起见,未显示某些代码。 有关整个代码列表,请参阅 NativeWindow 。
// 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
注解
              WndProc 截获发送到 参数的 handle 窗口消息。 使用 ReleaseHandle 将句柄的窗口过程重置为默认窗口过程。
方法 AssignHandle 调用 OnHandleChange 方法以指示 属性的值 Handle 已更改。
注意
要分配的句柄不能位于不同的应用程序进程中。