Question

Je dois implémenter le contrôle TreeList de la même manière que dans Process Explorer. Je suis assez novice dans l'interface graphique et je n'ai pas écrit de contrôles aussi compliqués.

Comme je le vois dans Process Explorer, il existe une TreeListWindowClass, qui contient des enfants: 2 en-têtes, 3 barres de défilement (l'une d'elles est invisible?) Et 1 statique (place entre les barres de défilement visibles). Si je comprends bien, le contrôle principal dessine tous les éléments à l'intérieur de lui-même. De plus, je n'ai pas trouvé mfcxxx.dll dans les dll attachées.

Question 1: quel cadre vaut-il mieux utiliser? Il y a: MFC, WTL, WinAPI simple… J'ai jeté un coup d'œil à cette implémentation http://www.codeguru. com / cpp / controls / treeview / classes / article.php / c13167 et a été confondu avec plus de 8000 lignes de code dans un fichier cpp avec d'énormes structures (l'une d'elles contient 80 membres). C'est simple WinAPI (et C sans ++). Je veux vraiment utiliser le style POO.=)

Question 2: Quelle devrait être la conception de haut niveau de ce contrôle? Pouvez-vous expliquer sans détails comment ce contrôle doit être conçu?

Mes limitations: C ++, VS10, OS: Vista et supérieur.

Merci d'avance

Était-ce utile?

La solution

Je l'ai fait récemment et j'ai utilisé l'arborescence multi-colonnes de http:// www.mimec.org/articles/mfc/mctree

 Capture d'écran de l'arborescence à plusieurs colonnes

C'est assez basique, mais il a répondu à mes besoins et est assez compact.Il fournit une classe CColumnTreeView qui est une sous-classe de CView - donc il fonctionne correctement avec le modèle CDocument / CView standard de MFC.

Autres conseils

Vous pouvez trouver l'équivalent exact de la "Vue en liste arborescente" de Process Explorer à partir de la source de Process Hacker (ce qui est beaucoup meilleur IMHO.)

Qt est une bibliothèque qui offre un QTreeWidget entièrement fonctionnel qui ressemble àil répond aux exigences de votre programme.
entrez la description de l'image ici

DevExpress a d'excellents contrôles de liste d'arbres, mais ils sont écrits en C #.Cependant, vous pouvez les cibler à l'aide de C ++ / CLI ou de C ++ géré.Je ne suis donc pas sûr que vous puissiez gérer votre application.Alors peut-être que cela ne sera peut-être pas si utile.

En ce qui concerne les contrôles gratuits de la liste d'arbres, j'essaie de m'en éloigner, en raison de bugs et d'un manque de support.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top