I want to set the owner form to that of an unamanged window. I have the unmanaged window's handle. How can I set this unmanaged window to be the owner window for my managed form?
IntPtr hWnd = GetUnmanagedWindow();//assume the handle is returned correctly
Form form = new Form();
form.Show(ConvertToManaged(hWnd));//Need an implementation for ConvertOrSomething()
The standard way to do this is to use the NativeWindow
class.
IntPtr hWnd = GetUnmanagedWindow();//assume the handle is returned correctly
Form form = new Form();
NativeWindow nativeWindow = new NativeWindow();
nativeWindow.AssignHandle(hWnd);
form.Show(nativeWindow);
As Hans points out, remember to call ReleaseHandle
when are done with it.
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;
}
}