オプション1
Handle
IWin32Window は、既に IntPtr を持っているため、実装するのがそれほど難しくないプロパティ のみを想定しています。IWin32Window を実装するラッパー クラスを作成します。
public class WindowWrapper : System.Windows.Forms.IWin32Window
{
public WindowWrapper(IntPtr handle)
{
_hwnd = handle;
}
public WindowWrapper(Window window)
{
_hwnd = new WindowInteropHelper(window).Handle;
}
public IntPtr Handle
{
get { return _hwnd; }
}
private IntPtr _hwnd;
}
次に、次のように IWin32Window を取得します。
IWin32Window win32Window = new WindowWrapper(new WindowInteropHelper(this).Handle);
または(KeithSの提案に応じて):
IWin32Window win32Window = new WindowWrapper(this);
オプション 2 (Scott Chamberlain のコメントに感謝)
IWin32Window を実装する既存の NativeWindow クラスを使用します。
NativeWindow win32Parent = new NativeWindow();
win32Parent.AssignHandle(new WindowInteropHelper(this).Handle);