NativeWindow.ReleaseHandle メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ウィンドウに関連付けられているハンドルを解放します。
public:
virtual void ReleaseHandle();
public virtual void ReleaseHandle ();
abstract member ReleaseHandle : unit -> unit
override this.ReleaseHandle : unit -> unit
Public Overridable Sub ReleaseHandle ()
例
次のコード例では、ウィンドウ プロシージャでオペレーティング システム ウィンドウ メッセージをインターセプトする方法を示します。 この例では、これを実現するために を NativeWindow 継承するクラスを作成します。
クラスは MyNativeWindowListener
、コンストラクターに渡されたフォームのウィンドウ プロシージャにフックし、 メソッドを WndProc オーバーライドしてウィンドウ メッセージを WM_ACTIVATEAPP
インターセプトします。 クラスは、 メソッドと ReleaseHandle メソッドを使用して、 が使用AssignHandleするウィンドウ ハンドルを識別する方法を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
注釈
このメソッドは、ウィンドウ ハンドルを破棄しません。 代わりに、ハンドルのウィンドウ プロシージャを既定のウィンドウ プロシージャに設定します。 プロパティを Handle 0 に設定し、 を呼び出 OnHandleChange して変更を反映します。
Windows がハンドルを破棄したことを示すネイティブ Win32 WM_NCDESTROY メッセージを受け取った場合、ウィンドウはこのメソッドを自動的に呼び出します。
適用対象
こちらもご覧ください
.NET