2011-02-14 6 views
1

양식을 내 프로그램에없는 창 자식으로 표시하려면 어떻게해야합니까?양식의 SetParent()에 대한 관리 된 메서드

부모가되어야하는 것에 대한 창 핸들이 있지만 양식의 SetParent()에 대한 관리되는 메서드가 표시되지 않습니다. 하나 있습니까? form.Show() 메서드는 IWin32Window를 구현하는 관리되는 개체 만 허용하는 것으로 보입니다.

관리되는 방법이없는 경우 향후 시스템과 최대한의 호환성을 유지하기 위해 API를 선언하는 데 주로 사용되는 방법은 무엇입니까? 이

<DllImport("user32.dll")> _ 
Private Shared Function SetParent(hWndChild As IntPtr, hWndNewParent As IntPtr) As IntPtr 
End Function 

을? :처럼 그것은 IWin32Window를 구현하고 어떻게 든 창을 래핑하는 클래스를 만들 수 있습니까? 같은 것을 할이 편리하게 될 것입니다,하지만 난 IWin32Window 익숙하지 않다 ... Handle

frmMyForm.Show(New NativeWindowWrapper(12345)) 'Where 12345 is the hWnd of the window I want to wrap 

답변

0

이 오 와우, 난 그냥 IWin32Window에 문서를 발견했고, 그것은 단지 하나 개의 속성 인 것을 알 수있다. 예, 다음 물론 나는 쉽게 NativeWindowWrapper 클래스 ...

나는 아직 그것을 테스트하지 않은,하지만 난 그게 잘 작동 확신을 ... 할 수

Public Class NativeWindowWrapper 
    Implements IWin32Window 

    Private _Handle As IntPtr 

    Public ReadOnly Property Handle As System.IntPtr Implements System.Windows.Forms.IWin32Window.Handle 
     Get 
      Return _Handle 
     End Get 
    End Property 

    Public Sub New(ByVal Handle As IntPtr) 
     Me._Handle = Handle 
    End Sub 
End Class