Мне нужно показать мой System.Windows.Forms.Form как дочернее окно неуправляемого C ++ HWND. Это код C # SDK, который возвращает NativeWindow:
public static NativeWindow MainWindow()
{
Diagnostics.Process process = Diagnostics.Process.GetCurrentProcess();
if (null == process)
return null;
IntPtr handle = process.MainWindowHandle;
if (IntPtr.Zero == handle)
return null;
NativeWindow wnd = new NativeWindow();
wnd.AssignHandle(handle);
return wnd;
}
Вот как это реализовано в плагине:
IWin32Window rh_wnd = Rhino.RhinoApp.MainWindow();
DocEditor.Show(rh_wnd);
Это работает .... большую часть времени. Но это также часто дает сбой при первом вызове этого кода:
Ошибка HWND http://www.freeimagehosting.net/uploads/f29bc27823.png
Позвони еще раз, все работает нормально.
Что происходит?!?