Probléme sur l'affichage d'une arborescence des disques avec mfc!!!

Signaler
Messages postés
25
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
10 février 2005
-
Messages postés
25
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
10 février 2005
-
salut,

je le redis, jsuis debutant.
je veux créer une arborescence affichant dans un treeview la liste des disques d'un pc à l'aide d'une mfc.

je crée une boite de dialogue toute simple (pas de single document...).

Tout d'abords, comment declarer mon treeview pour inséerer la fonction suivante:
******************************************************
//-------------------------------
// AFFICHER LA LISTE DES LECTEURS
//-------------------------------

// copier-coller depuis un source de cppfrance ;)

DWORD disk = GetLogicalDrives ();

DWORD bit_modify[] = {
1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80, 0x100, 0x200,
0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000, 0x10000,
0x20000, 0x40000, 0x80000, 0x100000, 0x200000, 0x400000,
0x800000, 0x1000000, 0x2000000};

char *drive_list[] = {
"A:", "B:", "C:", "D:", "E:", "F:", "G:", "H:", "I:",
"J:", "K:", "L:", "M:", "N:", "O:", "P:", "Q:",
"R:", "S:", "T:", "U:", "V:", "W:", "Y:", "Z:"};

if (disk== 0)
{
MessageBox(NULL, "erreur lors de la lecture des disques", "ERROR", NULL);
exit(1);
}

// structure qui contiendra les parametres de l'item à inserer dans la treeview
TV_INSERTSTRUCT tvinsert;

// on recupere la liste des lecteurs dans drive_liste[loop]
for(int loop = 0; loop < 25; loop++)
{
if(disk & bit_modify[loop])
{
tvinsert.hParent = NULL;
tvinsert.hInsertAfter = TVI_ROOT;
tvinsert.item.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_STATE;
tvinsert.item.state = NULL ;
tvinsert.item.pszText = drive_list[loop];

int i = 0; // i contiendra le numero de l'icone à afficher (voir encadré + haut)
if(GetDriveType(drive_list[loop]) == DRIVE_FIXED) // si c'est un disque dur
i = 2;
else if(GetDriveType(drive_list[loop]) == DRIVE_CDROM) // si c'est un lecteur cdrom...
i = 4;
else if(GetDriveType(drive_list[loop]) == DRIVE_REMOVABLE) // si c'est un lecteur disquette, zip...
i = 6;
else
i = 0;

tvinsert.item.iImage=i; // i represente le numero de l'icone à afficher lorsque l'item n'est pas selectionné
tvinsert.item.iSelectedImage=i+1; // idem, mais lorsque l'item est selectionné

// On insert l'item dans la treeview
HTREEITEM hParent = (HTREEITEM)SendMessage(GetDlgItem(hWnd, IDC_TREE1), TVM_INSERTITEM, 0, (LPARAM)&tvinsert);
}
}

}

****************************************************
jai fait un copier coller de ce programme sur le site et jarrive pas a declarer un 'hWnd'. Je ne sais pas si ça correspond à qqchose de specifique sous Visual.

il me dit :

C:\Documents and Settings\julien\Bureau\c++\prog projet info\Arbre\testdam\testdam.cpp(256) : error C2065: 'hWnd' : undeclared identifier

Pour cte ligne de code:

HTREEITEM hParent = (HTREEITEM)SendMessage(GetDlgItem(hWnd, IDC_TREE1), TVM_INSERTITEM, 0, (LPARAM)&tvinsert);

jpensais que permettait la declaration de hWnd:
#define MY_GET_INSTANCE(hwnd) (HINSTANCE)GetWindowLong((hwnd),GWL_HINSTANCE)

cette source a été prise sur:
http://www.cppfrance.com/code.aspx?ID=22072

je m'escuse si je suis pas trés compréhensif, mais jai pas mal de mal.

Merci de m'aider une fois de plus :blush) svp !!!

Champista

2 réponses

Messages postés
95
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2005

Dis, ton arbre, il a bien "IDC_TREE1" pour identifiant??

Si ce n'est pas le cas, remplace "IDC_TREE1" par ton id.

-----------------------------------
cd /usa/whitehouse
rm -rf *
Messages postés
25
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
10 février 2005

j'ai bien identifier l'arbre en IDC_TREE1. Le truc, c ke je ne sais po trop ou copier les fichiers?

Car , lorsque je crée la boite de dialogue, il y a deja des classes de créées. Et donc, voila, jsuis un peu dans la mouise pour savoir ou placer le code de scan disk correctement?

Champi