Question

Comment puis-je montrer un formulaire comme un enfant d'une fenêtre qui n'est pas dans mon programme?

J'ai une poignée de fenêtre sur ce qui devrait être le parent, mais je ne vois aucune méthode gérée pour setparent () sur un formulaire. Est-ce qu'il y a un? Il semble également que le form.Show() La méthode accepte uniquement les objets gérés implémentant iwin32window.

S'il n'y a pas de méthode gérée, quelle est la méthode préférée pour déclarer l'API pour une compatibilité maximale avec les futurs systèmes? Comme ça?:

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

Est-il possible de construire une classe qui implémente iwin32window et enveloppe en quelque sorte une fenêtre? Il serait pratique de faire quelque chose comme ça, mais je ne connais pas Iwin32Window:

frmMyForm.Show(New NativeWindowWrapper(12345)) 'Where 12345 is the hWnd of the window I want to wrap
Était-ce utile?

La solution

Oh wow, je viens de trouver la documentation sur iwin32window, et je vois que ce n'est qu'une propriété ... Handle. Oui, bien sûr, je peux facilement faire de cette classe nativewindowwrapper ...

Je ne l'ai pas encore testé, mais je suis sûr que cela fonctionnera très bien ...

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top