Управляемый метод для SetParent () в форме - PullRequest
1 голос
/ 14 февраля 2011

Как я могу показать форму в качестве дочернего элемента окна, которого нет в моей программе?

У меня есть дескриптор окна того, кто должен быть родителем, но я не вижу какого-либо управляемого метода для 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

1 Ответ

0 голосов
/ 16 февраля 2011

Ого, я только что нашел документацию по IWin32Window и вижу, что это только одно свойство ... Handle.Да, тогда, конечно, я легко могу создать этот класс 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
...