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:
#32770 (Dialog)
(j’ai utilisé une application “Dialog based”.)
Button
) WindowsForms10.Window.8.app.0.2bf8098_r20_ad1
(oh my)
WindowsForms10.BUTTON.app.0.2bf8098_r20_ad1
) 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.