bonjour
svp comment je peux afficher le contenu d'un dossier ds un ListBox
par exempl:
le dossier mes images contient plusieurs image, je vx afficher les noms des images ds ma liste?????
vous pouvez m'aider?![]()
bonjour
svp comment je peux afficher le contenu d'un dossier ds un ListBox
par exempl:
le dossier mes images contient plusieurs image, je vx afficher les noms des images ds ma liste?????
vous pouvez m'aider?![]()
Tu as du bol, il existe une fonction pour ça:
Il faut envoyer le message LB_DIR à ta ListBox...
salut ,
voir la documetation MFC pour plus d'infos sur les types...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pMyListBox->Dir(DDL_READWRITE|DDL_DIRECTORY, _T("*.*"));
![]()
est cette fonction affiche le contenu d'un dossier???
et comment je choisis le directory![]()
en changeant le repertoire de base au préalable...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 TCHAR lpszWinPath[MAX_PATH], lpszOldPath[MAX_PATH]; ::GetWindowsDirectory(lpszWinPath, MAX_PATH); // ici on recupere le repertoire windows pour l'exemple ::GetCurrentDirectory(MAX_PATH, lpszOldPath);// on stock le repertoire courant ::SetCurrentDirectory(lpszWinPath);// on de deplace sur le repertoire à lister pMyListBox->ResetContent(); pMyListBox->Dir(DDL_READWRITE|DDL_DIRECTORY, _T("*.*")); ::SetCurrentDirectory(lpszOldPath);// on revient sur le repertoire d'origine.![]()
svp je te pose qqs questions betes![]()
par exemple j'ai une liste : ICC_NOM_IMAGE
je vx afficher le contenu de dossiers mes images( çàd affichers ts les noms d'images existants ds la ListBox)
mnt le code que tu m'ecris me permet de choisir un repertoire courant et de deplacer........
mais ou je mets ce code??![]()
en plus y a t il des initialisations ??
lpszWinPath[MAX_PATH] et lpszOldPath[MAX_PATH] signalent koi??
![]()
![]()
merci
lpszWinPath et lpszOldPath sont deux tableaux de caractères, de longueur MAX_PATH.
lpszWinPath est initialisé avec le chemin du répertoire de Windows (par défaut, c'est C:\Windows).
lpszOldPath contient la sauvegarde de l'ancien répertoire courant, qui est restauré à la fin.
Ainsi, l'exécution de ce fragment de code ne "change" pas le répertoire courant (c'est le même avant et après).
Attention toutefois en multi-thread: D'après l'aide, il n'y a qu'un seul répertoire courant pour tout le processus, donc si plusieurs threads doivent l'utiliser, il vaut mieux utiliser un mécanisme de verrouillage...
je te remercie de tes explications![]()
mais il me reste qqs qst![]()
j'initiale lpszWinPath[MAX_PATH]= "c:\\Window";
mais ou je mets ce code + commet je le lieer à ma ListBox![]()
OÙ AS-TU VU QUELQU'UN METTRE EXPLICITEMENT LE DOSSIER C:\WINDOWS ??
C'est à ça que servait la fonction GetWindowsDirectory.
Et comme l'indique le code précédent, tu n'as pas à le "lier" à la listbox: La fonction membre CListBox::Dir() regarde dans le répertoire courant.
http://msdn2.microsoft.com/en-us/library/9hdx240b.aspx
non jamis vu![]()
![]()
car je fait execute ce code , il me done plusieurs erreurs![]()
bonsoir
qd j'execute ce morceux de code:
je m'affiche ds ma liste le contenu de dossier "C:\\Window"
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 BOOL CInserDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here TCHAR lpszWinPath[MAX_PATH], lpszOldPath[MAX_PATH]; ::GetWindowsDirectory(lpszWinPath, MAX_PATH); // ici on recupere le repertoire windows pour l'exemple ::GetCurrentDirectory(MAX_PATH, lpszOldPath);// on stock le repertoire courant ::SetCurrentDirectory(lpszWinPath);// on de deplace sur le repertoire à lister CListBox* pMyListBox ; pMyListBox=(CListBox*) GetDlgItem(IDC_MARQUES_CIMAGE); pMyListBox->ResetContent(); pMyListBox->Dir(DDL_READWRITE|DDL_DIRECTORY, _T("*.*")); // pMyListBox->Dir(0x0000|0x0010, _T("*.*")); ::SetCurrentDirectory(lpszOldPath); // on revient sur le repertoire d'origine. return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
mais qd je click sur un dossier rien ne hange
çàd je n'arrive pas à lister le contenu de ce dosier ou bien de rementer dehors![]()
![]()
car moi je vx afficger le ontenu de mes images
2eme question est ce que je px intialiser le hemin p "c:\\" au lieu de "c:\\Window"
merci d'avance![]()
La ListBox ne fait pas le boulot à ta place.
Si tu veux que ça change de dossier quand tu cliques (ou double-cliques) sur un nom de la ListBox, il va falloir que tu le programmes toi-même:
- Recevoir l'événement "clic sur un nom de la listbox"
- Traiter l'événement en prenant le nom du répertoire (chemin complet) et en le mettant en Current Directory pour réappeler la fonction Dir()...
une question bête ?
pourquoi tu n'utilises pas la classe CFileDialog directement ?
![]()
bonjour
comment j'utilise la classe CFileDialog directement???? j'ai pas compris ce que tu me dis!!!!!!!!![]()
pour ma question ets ce que je px intiliser le chemin par " c:\\" au lieu de "c:\\Window", est possible???
et pour lister les dossier et rementer , j'utilise getcursel(), mais j'ai pas compris ce que tu as ecris -appler fonction dir???
![]()
C'est dingue, on dirait que les deux threads ont été postés par deux "meera" différent(e)s...comment j'utilise la classe CFileDialog directement????
ce que je veux dire, comment je 'utiliser pour aficher le contenu d'un dossier
l'autrefois je l'ai utilisé pour afficher la boite dialog d'ouverture
Mr farscape me dit utilisé ce clase directement , je suis perturbé est ce que j'utilise ce morceaux de ciode et l'ameliorer ou bien changer la methode e utilisant ce classe
c ça ma question
![]()
![]()
salut
j'ai lit la postion de curseur sur la liste pour choisir de lister un dossier
mais je sais pas cmt compler le code apres la lecture de position![]()
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
41 BOOL CInserDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here SetDlgItemInt(IDC_INITGEN, 0); SetDlgItemInt(IDC_LARG, 0); TCHAR lpszWinPath[MAX_PATH], lpszOldPath[MAX_PATH]; ::GetWindowsDirectory(lpszWinPath, MAX_PATH); // ici on recupere le repertoire windows pour l'exemple ::GetCurrentDirectory(MAX_PATH, lpszOldPath);// on stock le repertoire courant ::SetCurrentDirectory(lpszWinPath);// on de deplace sur le repertoire à lister CListBox* pMyListBox ; pMyListBox=(CListBox*) GetDlgItem(IDC_MARQUES_CIMAGE); pMyListBox->ResetContent(); pMyListBox->Dir(DDL_READWRITE|DDL_DIRECTORY, _T("*.*")); // pMyListBox->Dir(0x0000|0x0010, _T("*.*")); ::SetCurrentDirectory(lpszOldPath); // on revient sur le repertoire d'origine. int n= static_cast< CListBox * >(GetDlgItem(IDC_MARQUES_CIMAGE))->GetCurSel(); if(n!=LB_ERR) static_cast< CListBox * >(GetDlgItem(IDC_MARQUES_CIMAGE))->GetText(n,pMyListBox); ? ? return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } est ce qq1 pt m'aider:oops:
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager