1

所有者フォームを管理されていないウィンドウのフォームに設定したいと思います。管理されていないウィンドウのハンドルがあります。この管理されていないウィンドウを管理されたフォームの所有者ウィンドウに設定するにはどうすればよいですか?

IntPtr hWnd = GetUnmanagedWindow();//assume the handle is returned correctly
Form form = new Form();
form.Show(ConvertToManaged(hWnd));//Need an implementation for ConvertOrSomething()
4

2 に答える 2

7

これを行う標準的な方法は、NativeWindowクラスを使用することです。

IntPtr hWnd = GetUnmanagedWindow();//assume the handle is returned correctly
Form form = new Form();
NativeWindow nativeWindow = new NativeWindow();
nativeWindow.AssignHandle(hWnd);
form.Show(nativeWindow);

ハンスが指摘するように、ReleaseHandleそれが終わったら電話することを忘れないでください。

于 2012-10-23T13:17:41.253 に答える
3
public ManagedWindow ConvertToManaged(IntPtr hWnd)
{
   return new ManagedWindow(hWnd);
}

    public class ManagedWindow : IWin32Window
    {
        IntPtr _handle;
        public IntPtr Handle
        {
            get { return _handle; }
        }

        public ManagedWindow(IntPtr handle)
        {
            _handle = handle;
        }
    }
于 2012-10-22T20:36:05.260 に答える