[VC++] Treeview ?

Treeview ? [VC++] - C++ - Programmation

Marsh Posté le 29-01-2003 à 15:00:08    

Voila, je suis en train de coder un truc, et j'ai besoin d'un treeview. J'ai donc cree une classe qui derive de CTreeView, et j'arrive a inserer des elements a l'interieur, mais maintenant le truc que je trouve pas, c'est comment avoir un petit '+' a cote de certains elements qui contient d'autres, un peu comme un disque dur dans l'explorateur de windows... si qqun a une idee...  :hello:


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 29-01-2003 à 15:00:08   

Reply

Marsh Posté le 29-01-2003 à 15:24:42    

voir propriétés du MFC TreeView, il y a un page avec ces props


---------------
Angel Eyes, j'en raffole tous les matins... :pt1cable:  
Reply

Marsh Posté le 29-01-2003 à 15:32:10    

Tree View properties -> style -> has buttons


---------------
Angel Eyes, j'en raffole tous les matins... :pt1cable:  
Reply

Marsh Posté le 29-01-2003 à 15:36:53    

c'est pas une frame que j'ai fait avec le dialog editor :/, je la cree dans mon code:
 

Code :
  1. BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
  2. {
  3. // TODO: Add your specialized code here and/or call the base class
  4. splitter.CreateStatic(this,1,2);
  5. splitter.CreateView(0,0,RUNTIME_CLASS(CMyTreeView),CSize(100,0),pContext);
  6. splitter.CreateView(0,1,RUNTIME_CLASS(CMyListView),CSize(0,0),pContext);
  7. //splitter.CreateView(1, 1,)
  8. return (TRUE);
  9. }


 
J'ajoute les elements dans le OnCreate qui correspond a la classe CMyTreeView:
 
 

Code :
  1. int CMyTreeView::OnCreate(LPCREATESTRUCT lpCreateStruct)
  2. {
  3. if (CTreeView::OnCreate(lpCreateStruct) == -1)
  4.  return -1;
  5. // TODO: Add your specialized creation code here
  6. CTreeCtrl &a = GetTreeCtrl();
  7. a.InsertItem("Header" );
  8. a.InsertItem("Optionnal header" );
  9. a.InsertItem("Data directory" );
  10. HTREEITEM sections = a.InsertItem("Section Table" );
  11.  a.InsertItem("Section 0",sections);
  12.  a.InsertItem("Section 1",sections);
  13.  a.InsertItem("Section 2",sections);
  14.  a.InsertItem("Section 3",sections);
  15. a.InsertItem("Imports" );
  16. a.InsertItem("Exports" );
  17. return 0;
  18. }


Je vois pas trop :/


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 29-01-2003 à 15:40:06    

sorry, ai pas ma doc sous la main pour le moment, je répondrai vers 20h si personne ne l'a fait d'ici là.
 
Faut regarder pour has buttons dans la doc MFC


---------------
Angel Eyes, j'en raffole tous les matins... :pt1cable:  
Reply

Marsh Posté le 29-01-2003 à 15:45:50    

Reply

Marsh Posté le 29-01-2003 à 15:46:16    

c'est un paramètre de CTreeCtrl::create, voir doc MFC


---------------
Angel Eyes, j'en raffole tous les matins... :pt1cable:  
Reply

Marsh Posté le 29-01-2003 à 15:47:02    

youdontcare : exactement :D


---------------
Angel Eyes, j'en raffole tous les matins... :pt1cable:  
Reply

Marsh Posté le 29-01-2003 à 15:51:59    

merci pour vos reponses :jap:, mais ... je le mets ou dans mon code?  :??:
 
En fait j'ai pas un "vrai" appel au constructeur, c'est quand j'ajoute la classe au splitter qu'elle est instanciee j'imagine ? :??:
 

Code :
  1. splitter.CreateView(0,0,RUNTIME_CLASS(CMyTreeView),CSize(100,0),pContext);


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 29-01-2003 à 16:10:24    

apparemment dans ton cas ce n'est pas possible à la création, donc passe par ModifyStyle :
 
http://msdn.microsoft.com/library/ [...] wnd_94.asp
 
CTreeCtrl &a = GetTreeCtrl();  
a.ModifyStyle(0, TVS_HASLINES);

Reply

Marsh Posté le 29-01-2003 à 16:10:24   

Reply

Marsh Posté le 29-01-2003 à 16:31:29    

j'ai fait comme ca, et ca marche!
[:kazouille]
 

Code :
  1. a.ModifyStyle(0, TVS_HASBUTTONS|TVS_LINESATROOT |TVS_HASLINES);


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 29-01-2003 à 16:32:38    

Il faut que tu utilise la méthode PreCreateWindow (de mémoire).
Elle prend en paramètre une structure CREATESTRUCT.
 
La, un petit coup de cs.style |= TVS_HASBUTTONS et c'est gagné

Reply

Marsh Posté le 29-01-2003 à 17:47:16    

junior07 a écrit :

Il faut que tu utilise la méthode PreCreateWindow (de mémoire).
Elle prend en paramètre une structure CREATESTRUCT.
 
La, un petit coup de cs.style |= TVS_HASBUTTONS et c'est gagné


 
 
j'essaierai aussi ca :)


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed