Juste pour le plaisir, je développe un port Win32 natif de Mozilla XUL. XUL permet de créer des structures imbriquées complexes de toutes sortes de boîtes de mise en page (hbox, vbox, grid, deck ..). Pour ma mise en œuvre Windows, il serait pratique de les implémenter en tant que fenêtres enfants STATIC. Parce que je peux alors positionner leurs fenêtres enfants en utilisant x & y décalages indépendamment de la position de la boîte parent. Toutefois, cette approche peut conduire à certaines fenêtres ayant beaucoup de fenêtres enfants imbriquées. Et je me demande s'il y aurait des inconvénients à une telle situation. Est-ce que quelqu'un ici sait?Inconvénients d'imbrication de fenêtres enfants?
Répondre
J'ai été dans cette voie, et je ne vous recommande pas réellement de faire des hiérarchies profondes de fenêtres. De nombreuses fonctions d'assistance Windows (par exemple, IsDialogMessage
) fonctionnent mieux avec les dispositions "traditionnelles". En outre, les fenêtres dans Windows sont des objets relativement lourds, principalement pour des raisons historiques. Donc, si vous avez des tonnes d'objets, vous pourriez rencontrer des limitations, des problèmes de performance, etc.
Ce que j'ai fait à la place est de représenter la mise en page profondément imbriquée comme un arbre d'objets C++ réguliers qui est parallèle à la hiérarchie plus plate de fenêtres réelles. Certains nœuds de la hiérarchie d'objets ont les HWND des fenêtres "réelles" qu'ils représentent. Vous dites à la hiérarchie de mettre en page et les nœuds appliquent les résultats aux fenêtres correspondantes. Par exemple, la racine de la hiérarchie peut représenter une fenêtre de dialogue et les nœuds feuilles représentent les fenêtres enfants. Mais la hiérarchie a plusieurs couches d'objets non-fenêtre entre ceux qui connaissent la mise en page.
Une prise rude sur ce point:
- surcharge de mémoire pour la gestion des fenêtres sur application- et os côté
- vitesse réduite en raison des appels à la bibliothèque externe/os qui ne manière plus pour les fenêtres que nécessaire pour votre application
- peut-être tout à fait certains frais généraux par des chemins de long message de fenêtre dans des dispositions complexes
Cela dépend probablement wether vous voulez un implementati très rapide sur et faire un dessin tamponné efficace par vous-même ou que vous voulez travailler de manière plus fiable et avec moins de temps investi.
- 1. Fenêtres enfants croisées Win32 pur
- 2. Fenêtres enfants Silverlight dans le modèle MVVM
- 3. Comment gérer les propriétés de la page des fenêtres du navigateur parents à partir des fenêtres enfants fermer dans JS
- 4. Inconvénients de Context.Current Pattern?
- 5. Avantages/inconvénients pour les conteneurs pour les nœuds enfants en XML?
- 6. Winforms + enfants MDI
- 7. Avantages et inconvénients de DotNetNuke?
- 8. Paramètres WCF readerQuotas - inconvénients?
- 9. CSS Master Reset - Inconvénients?
- 10. gestionnaire de fenêtres flexibles
- 11. fenêtres Formulaire de demande
- 12. Enfants de XElement
- 13. Autoriser l'ouverture de plusieurs fenêtres si les fenêtres n'existent pas
- 14. Quels sont les avantages/inconvénients de py2exe
- 15. Utilisation de WebServiceHostFactory Avantages et inconvénients
- 16. Avantages et inconvénients de DFC et DFS?
- 17. Inconvénients de l'ASP.net Web Forms Viewcase MVC?
- 18. fenêtres sécurité
- 19. Menu de remplacement des fenêtres
- 20. Gestionnaire de fenêtres Visual Studio
- 21. Wordpress récupération Enfants de poste
- 22. WinForms fenêtres flottantes (comme Delphi7 IDE)
- 23. l'accès des enfants des tables enfants dans Rails
- 24. Interactions entre les fenêtres
- 25. Fenêtres transparentes avec Linux
- 26. fenêtres WCF pouvoirs
- 27. Quels sont les inconvénients des méthodes statiques?
- 28. Attributs non (X) HTML ... quels inconvénients?
- 29. Inconvénients du chiffrement d'objet SQL Server 2005+?
- 30. Plusieurs fenêtres dans OpenGL?
C'est exactement ce que je fais! Par exemple pour la disposition de la grille, j'ai une classe nommée VirtualGrid. Il ne connaît que le rectangle sur lequel il peut s'appuyer et ne s'appuie pas sur une fenêtre native. La seule exception que j'ai faite jusqu'à maintenant est la scrollbox. Parce qu'il est beaucoup plus facile de faire défiler une seule fenêtre statique que de nombreuses fenêtres enfants dans une certaine zone. – StackedCrooked