1

如何将表单显示为不在我的程序中的窗口的子窗口?

我有一个应该是父级的窗口句柄,但我没有在表单上看到 SetParent() 的任何托管方法。有吗?该form.Show()方法似乎也只接受实现 IWin32Window 的托管对象。

如果没有托管方法,那么声明 API 以最大程度地兼容未来系统的首选方法是什么?像这样?:

<DllImport("user32.dll")> _
Private Shared Function SetParent(hWndChild As IntPtr, hWndNewParent As IntPtr) As IntPtr
End Function

是否可以构建一个实现 IWin32Window 并以某种方式包装窗口的类?这样做会很方便,但我不熟悉 IWin32Window:

frmMyForm.Show(New NativeWindowWrapper(12345)) 'Where 12345 is the hWnd of the window I want to wrap
4

1 回答 1

0

哇哦,我刚刚在IWin32Window上找到了文档,发现它只有一个属性Handle...。是的,那我当然可以轻松制作这个 NativeWindowWrapper 类...

我还没有测试它,但我相信它会工作得很好......

Public Class NativeWindowWrapper
    Implements IWin32Window

    Private _Handle As IntPtr

    Public ReadOnly Property Handle As System.IntPtr Implements System.Windows.Forms.IWin32Window.Handle
        Get
            Return _Handle
        End Get
    End Property

    Public Sub New(ByVal Handle As IntPtr)
        Me._Handle = Handle
    End Sub
End Class
于 2011-02-16T14:33:32.140 回答