Les contrôles Windows natifs sont-ils toujours utilisés dans les interfaces graphiques .NET?

Les éléments affichés lorsque vous créez une interface graphique avec WinForms ou WPF reposent-ils toujours sur les contrôles natifs tels que les contrôles communs ou les classes de fenêtres fournies par le système ou est-ce que tout ce qui est affiché “personnalisé” est dessiné par la structure?

Note: Je ne parle pas de choses comme une boîte de dialog de fichier, mais une interface graphique qui a été implémentée avec WinForms ou WPF.

Et oui, c’est purement par intérêt.

User HighCore a commenté:

WPF Utilise un “HWND” pour les objects Window, mais tous les autres objects (Controls) à l’intérieur de la fenêtre sont des objects WPF non liés à Win32, mais AFAIK, winforms utilise un HWND distinct pour chaque élément de l’interface utilisateur.

Et en effet, en utilisant Spy ++, nous pouvons observer ce qui suit lorsque nous créons une application de test avec un simple dialog / fenêtre et un bouton:

MFC / native:

  • La fenêtre de l’application est une fenêtre (HWND) avec la classe de fenêtre #32770 (Dialog) (j’ai utilisé une application “Dialog based”.)
    • Le bouton est une fenêtre séparée (classe: Button )

Windows Forms:

  • La fenêtre de l’application a la classe WindowsForms10.Window.8.app.0.2bf8098_r20_ad1 (oh my)
    • Le bouton est une fenêtre distincte (Classe: WindowsForms10.BUTTON.app.0.2bf8098_r20_ad1 )

WPF

  • Il n’y a qu’une seule fenêtre de niveau supérieur, bien que pour faire bonne mesure j’ai ajouté une zone de liste déroulante, une zone de liste et un menu à cette fenêtre dans le concepteur d’interface utilisateur.
  • La classe de la seule fenêtre est la suivante: HwndWrapper[WpfApplication1.exe;;9b1aec0f-1b88-419c-8730-858906314cd9]

Les noms de classe de fenêtre sont en fait assez intéressants: avec le MFC / natif, vous obtenez les classes connues pendant des années et documentées sur MSDN. Avec Windows Forms, il semble qu’il utilise toujours les mêmes noms de classe. Et avec WPF, il semble que le nom d’une classe d’une fenêtre incorpore également le nom de l’exécutable / processus.

Donc, apparemment, MS pense qu’il n’est plus nécessaire d’utiliser plus d’une fenêtre par fenêtre. Je pense que je dois ouvrir une deuxième question pour cela.

Windows Forms utilise des contrôles natifs pour certains éléments de l’interface utilisateur. WPF dessine tout seul.