如何将表单显示为不在我程序中的窗口的子窗口?
我有一个窗口句柄,应该是父窗口,但是我没有在窗体上看到任何针对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
答案 0 :(得分: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