문제

내 프로그램에없는 창의 자식으로 양식을 표시 할 수 있습니까?

부모가되어야하는 것에 대한 창 핸들이 있지만 양식에 setParent ()에 대한 관리 방법이 표시되지 않습니다.거기 있니?form.Show() 메서드는 IWIn32Window를 구현하는 관리 객체 만 수락하는 것으로 보입니다.

관리 방법이없는 경우 향후 시스템과의 호환성을 최대한 활용할 수 있도록 API를 선언하는 기본 방법은 무엇입니까?이처럼? :

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

iwin32window를 구현하는 클래스를 구축 할 수 있으며 어쨌든 윈도우를 랩핑 할 수 있습니까?그것은 이와 같은 일을 할 수 있습니다. 그러나 나는 iwin32window에 익숙하지 않습니다 :

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

도움이 되었습니까?

해결책

오 와우, 방금 IWIN32Window에 대한 문서를 찾았으며 그것이 하나의 속성 만 있음을 알 수 있습니다 ... Handle.예, 그런 다음 물론 나는 쉽게이 원시적 WindowWrapper 클래스를 만들 수 있습니다 ...

나는 아직 그것을 테스트하지 않았지만, 나는 그것이 잘 작동 할 것이라고 확신합니다 ...

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
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top