ウィンドウ ハンドルは有効であることが保証されており、ウィンドウが存続している限り再利用されません。これは本質的にインデックスのようなものであり、グローバルに有効であり、一般にカーネル ハンドルよりもグローバル ID のように動作します (これは本質的に 1 つのプロセスとポインターでのみ有効です)。ウィンドウが閉じられると、ウィンドウ ハンドルが再利用される可能性があり、別のウィンドウを指すようになります。
しかし、明らかではないのは、Form
とその下にあるウィンドウの寿命がwindow
同じかどうかです。Delphi の VCL (Windows.Forms の精神的な前身) では、特定のプロパティの変更により、バックグラウンドでウィンドウが再作成されたことを漠然と覚えています。
Control.RecreatingHandleプロパティの存在は、基になるウィンドウの有効期間が .net コントロールの有効期間よりも実際に短い可能性があることを強く示しているようです。Form
これは、その存続期間中に変更のハンドルにつながる可能性があります。
Control.RecreateHandle
RecreateHandle メソッドは、新しいコントロールにパラメーターが必要なときに呼び出されますが、UpdateStyles から CreateParams への呼び出しを使用するだけでは不十分です。このメソッドは、DestroyHandle と CreateHandle も呼び出し、RecreatingHandle を true に設定します。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.recreatehandle.aspx
このメソッドの説明から、フォームの有効期間中にウィンドウ ハンドルが実際に変更される可能性があると結論付けています。