2010-04-28 2 views
2

내 System.Windows.Forms.Form을 관리되지 않는 C++ HWND의 자식 창으로 표시해야합니다. 이것은이 플러그인에 구현되는 방법입니다관리되지 않는 HWND의 자식으로 관리되는 양식

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; 
} 

: 이것은하는 NativeWindow를 검색하는 C#의 SDK 코드

IWin32Window rh_wnd = Rhino.RhinoApp.MainWindow(); 
DocEditor.Show(rh_wnd); 

이 작동 .... 대부분의 시간을. 그러나 그것은 또한 자주이 코드를 호출 처음 실패

HWND Error http://www.freeimagehosting.net/uploads/f29bc27823.png

다시 전화를 걸어 모든 것이 잘 작동합니다. 무슨 일 이니?!?

+0

포인터 문제 .... –

답변

2

아마도 rh_wnd가 null이기 때문에 가능합니까? MainWindow()에서 null을 반환하는 최소한 2 가지 경우가 있습니다. 좋은 생각

IWin32Window rh_wnd = Rhino.RhinoApp.MainWindow(); 
if (rh_wnd != null) 
    DocEditor.Show(rh_wnd); 

을 확인하고 위의 오류를 중지하는 경우, 당신은 null을 반환 위의 조건 중 어떤 확인하고 거기에서 이동 할 수 있습니다 될 수 있습니다.

희망이 도움이됩니다.

관련 문제