我想将所有者表单设置为未启示的窗口的表单。我有不受管理的窗户的句柄。我如何将此不受管理的窗口设置为我的托管表格的所有者窗口?
IntPtr hWnd = GetUnmanagedWindow();//assume the handle is returned correctly
Form form = new Form();
form.Show(ConvertToManaged(hWnd));//Need an implementation for ConvertOrSomething()
这样做的标准方法是使用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
。
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;
}
}