|
Dernière réponse | |
---|---|
Sujet : c/c++ et les processus | |
weblook$ | A ma connaissance tu n'a guere le choix,une telle boite n'existe pas en 'préfabriqué'.Par contre à l'aide des MFC sa réalisation n'est pas trés compliqué:
pour l'arbre classe CTreeCtrl (Tree Ctrl pour la liste CListCtrl (List Ctrl)(clic droit option view->report)ou ListBox si tu ne veux qu'une seul colonne ci join un code d'exemple que tu utilisera pour initialisé ta boite (Ds la fonction OnInitDialog avec AppWizard) m_liste.InsertColumn(0,"Appareil",LVCFMT_LEFT,70 ); m_liste.InsertColumn(1,"Opt1",LVCFMT_LEFT,50); m_liste.InsertColumn(2,"Opt2",LVCFMT_LEFT,50); m_liste.InsertColumn(3,"Date",LVCFMT_RIGHT,80); hTree=m_tree.InsertItem("K1TP",0,1); hTree=m_tree.InsertItem("T",0,1,hTree); m_tree.InsertItem("10",0,1,hTree); m_tree.InsertItem("100",0,1,hTree); m_tree.Expand(hTree,TVE_EXPAND); hTree=m_tree.GetParentItem(hTree); hTree=m_tree.InsertItem("P",hTree); m_tree.InsertItem("1",0,1,hTree); m_tree.InsertItem("10",0,1,hTree); m_tree.Expand(hTree,TVE_EXPAND); hTree=m_tree.InsertItem("K2TP",0,1); //K2TP hTree=m_tree.InsertItem("T",0,1,hTree); m_tree.Expand(hTree,TVE_EXPAND); m_tree.InsertItem("1",0,1,hTree); m_tree.InsertItem("10",0,1,hTree); m_tree.InsertItem("100",0,1,hTree); m_tree.Expand(hTree,TVE_EXPAND); m_tree.Expand(m_tree.GetRootItem(),TVE_EXPAND); Voilà avec ça tu as déjà un bel arbre et une liste comportant 4 colonnes Quand tu cliqueras sur l'arbre cela appellera la fonction OnSelChangeTree (c'est un message dans AppWizard) voilà à quoi ça resemble: void mesure::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here POSITION pos; CString s; CStringList stringList1; int j=0,i=0; COleDateTime temp1,temp2; hTree=m_tree.GetSelectedItem(); j=m_liste.InsertItem(m_liste.GetItemCount(),"" ); do { s=m_tree.GetItemText(hTree); stringList1.AddHead(s); hTree=m_tree.GetParentItem(hTree); } while(hTree!=0); pos=stringList1.GetHeadPosition(); //pos initialis n tete de liste while(pos){ //tant que pos!=0 : fin de liste s=stringList1.GetNext(pos); m_liste.SetItemText(j,i++,s); } m_time.GetTime(temp1); m_dat.GetTime(temp2); s=temp2.Format("%d/%m " ) + temp1.Format("- %Hh%M" ); m_liste.SetItemText(j,3,s); stringList.RemoveAll(); for(int l=3;l>=0;l--){ if((m_liste.GetItemText(m_liste.GetItemCount()-1, l))!="" ) stringList.AddHead(m_liste.GetItemText(m_liste.Get ItemCount()-1,l)); } *pResult = 0; } Ainsi quand tu cliquera sur sur un élément de l'arbre cela ajoutera le nom de l'élément cliquer dans une stringlist sorte de vector mais défini dans les MFC,tu pourra de cette manière en parcourant cette stringlist ajouter les éléments sélectionnés dans ta Liste Ctrl (ou si tu n'a pas besoin de plusieurs colonnes dans une ListBox(méthode AddString("ta chaine" );) ou pour la ListeCtrl InsertItem(...) C'est un peu donné en vrac mais....faudra faire avec ;) Non je plaisante, si t'as le moindre pbm n'hésite pas... @+ |
Vue Rapide de la discussion |
---|