Bonjour,
je me demande s'il n'y a pas une méthode plus simple que de faire ceci pour déplacer un item :
sachant qu'il me reste ensuite à supprimer l'item source
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 // copie un item et ses fils juste après l'item demandé HTREEITEM CMyTreeCtrl::CopyItem(HTREEITEM hItem, HTREEITEM hItemParent, HTREEITEM hItemAfter /*= TVI_LAST*/) { // récupération du libellé CString sLabel = GetItemText(hItem); // récupération de l'item TVINSERTSTRUCT insertItem = {0}; insertItem.hParent = hItemParent; insertItem.hInsertAfter = hItemAfter; insertItem.item.hItem = hItem; insertItem.item.mask = TVIF_HANDLE | TVIF_CHILDREN | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE | TVIF_STATE | TVIF_TEXT; GetItem(&insertItem.item); // paramétrage du libellé insertItem.item.cchTextMax = sLabel.GetLength(); insertItem.item.pszText = sLabel.GetBuffer(); // ajout de la copie de l'item HTREEITEM hItemNouveau = InsertItem(&insertItem); SetItemData(hItemNouveau, GetItemData(hItem)); // on copie les paramètres de l'item CJFC_ItemBase* pParams = GetItemParams(hItemNouveau); *pParams = *GetItemParams(hItem); // si l'item a des enfants if(ItemHasChildren(hItem)) { // on les copie également hItem = GetChildItem(hItem); while(hItem) { CopyItem(hItem, hItemNouveau); hItem = GetNextSiblingItem(hItem); }; } // on retourne l'item nouvellement créé return hItemNouveau; }
je me pose la question aussi par rapport au fait que le "drag and drop" permet de déplacer (ou copier ?) un item, mais je ne sais pas comment c'est géré
si vous avez des suggestions, je suis preneur![]()
Partager