20

フォーム/コントロールのHandleプロパティから取得したハンドルをIWin32Window^に変換するにはどうすればよいですか?

4

3 に答える 3

28

Control.FromHandle

(これにより、IWin32Windowインターフェイスを実装するControlオブジェクトが取得されます。)

例えば。

IntPtr myWindowHandle = IntPtr(someVal);
IWin32Window^ w = Control::FromHandle(myWindowHandle);

これは、「フォーム/コントロールのHandleプロパティから取得された」ハンドルに依存していることに注意してください。この手法は、任意のWin32ウィンドウハンドルでは使用できません。

于 2010-03-20T03:59:34.133 に答える
27

独自のカスタムクラスを作成しなくても、.NETFrameworkによって直接サポートされるより単純なメソッドがあります。これは、任意のウィンドウハンドルで使用できます

タイプIntPtrのptrWindowHandleが与えられます:

using System.Windows.Forms;

NativeWindow nativeWindow = new NativeWindow();
nativeWindow.AssignHandle(ptrWindowHandle);

System.Windows.Forms.NativeWindowは、 IWin32Windowインターフェイスを実装します。

于 2012-06-08T23:50:47.213 に答える
7

これはまさにあなたが求めているもののようです。自分でやったことはありませんが、比較的簡単なようです。

Win32ハンドルからのIWin32Windowの作成

幸運を!

于 2010-03-20T03:54:54.917 に答える