2

System.Windows.Forms.Form をアンマネージ C++ HWND の子ウィンドウとして表示する必要があります。これは、NativeWindow を取得する C# SDK コードです。

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

もう一度呼び出してください。すべて正常に動作します。どうしたの?!?

4

1 に答える 1