Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : listcontrol : afficher liste fichiers d'un repertoire avec détails [ Windows / MFC ] (bougnat83)

samedi 19 août 2006 à 18:59:00 | listcontrol : afficher liste fichiers d'un repertoire avec détails

bougnat83

Bonjour.
Visual C++ 6.0, MFC.
J'ai créé une mfc listcontrol. Je souhaiterais y afficher les fichiers d'un repertoire spécifique dans une colonne et dans une 2ème, la date (de modification) correspondant à chacun de ces fichiers. En résumé, un mini mini explorateur windows réduit à la simple visualisation du contenu d'un répertoire bien spécifique et défini dans le code en "dur" avec les dates associées.
Si quelqu'un a un petit bout de code, ce serait sympa ou alors les fonctions à utoliser pour réaliser cela.
merci

dimanche 20 août 2006 à 19:18:14 | Re : listcontrol : afficher liste fichiers d'un repertoire avec détails

aardman

Membre Club
Salut,
Les fonctions à utiliser pourquoi ? ajouter les colones ? ajouter les items ? lister les fichiers ?


dimanche 20 août 2006 à 20:33:37 | Re : listcontrol : afficher liste fichiers d'un repertoire avec détails

bougnat83

oui, créer 2 colonnes. Dans 1, y ajouter le contenu d'un répertoire donné, dans la 2ème, les dates associées.
merci

dimanche 20 août 2006 à 20:40:21 | Re : listcontrol : afficher liste fichiers d'un repertoire avec détails

aardman

Membre Club
Salut,
Pour ajouter des colones regarde InsertColumn().
Pour ajouter des items, InsertItem(). Pour ajouter/modifier le texte de tes items, SetItem().


dimanche 20 août 2006 à 20:42:50 | Re : listcontrol : afficher liste fichiers d'un repertoire avec détails

bougnat83

merci, mais sais-tu comment faire pour ajouter le contenu entier d'un répertoire (ses fichiers) et retrouver leur date pour l'insérer dans la 2ème ?

dimanche 20 août 2006 à 20:59:52 | Re : listcontrol : afficher liste fichiers d'un repertoire avec détails

aardman

Membre Club
Salut,
Avec un CListCtrl je pense pas que ca soit possible, il faut lister les fichier manuelement avec la class CFindFile et ajouter un item dans le CListCtrl pour chaque fichier trouvé.


dimanche 20 août 2006 à 21:12:04 | Re : listcontrol : afficher liste fichiers d'un repertoire avec détails

bougnat83

merci. Et ce serait possible avec un autre control ?

dimanche 20 août 2006 à 21:21:20 | Re : listcontrol : afficher liste fichiers d'un repertoire avec détails

aardman

Membre Club
Salut,
Si tu veux que les noms, c'est possible avec une listbox, on en à déja discuté dans un autre post.


dimanche 20 août 2006 à 21:27:47 | Re : listcontrol : afficher liste fichiers d'un repertoire avec détails

bougnat83

en effet, avec un sendmessage. Ca, je l'ai fait, ça marche mais j'ai besoin des dates associées maintenant...

mardi 22 août 2006 à 11:25:26 | Re : listcontrol : afficher liste fichiers d'un repertoire avec détails

magma

 

 Exemple sans MFC

 

//-----------------------------------------------------------------------------
// FILELIST.C
// Lib: comctl32.lib ou libcomctl32.a
//-----------------------------------------------------------------------------
#define _WIN32_IE 0x0400
#include <windows.h>
#include <commctrl.h> 

#define IDC_STATUS   101
#define IDC_LISTVIEW 102

#define FILEPATH  "C:\\windows\\*.*"   // Nom du dossier a modifier

HINSTANCE hInst;
HWND      hStatus;
HWND      hListview;

//-----------------------------------------------------------------------------
HWND CreateListView(HINSTANCE hInstance, HWND hParent)
{
  LV_COLUMN lvColumn;
  int       i, iWidth[] = {200, 100, 100};
  char      *szTitre[] = {"Nom", "Taille", "Date"};
  DWORD     dwStyle = LVS_REPORT|LVS_SINGLESEL|WS_CHILD|WS_BORDER|WS_VISIBLE;
  HWND      hListview = CreateWindowEx(0,       
                                       WC_LISTVIEW,           
                                       NULL,                     
                                       dwStyle,                  
                                       0, 0, 0, 0,                       
                                       hParent,               
                                       (HMENU)IDC_LISTVIEW,      
                                       hInstance,                  
                                       NULL);                   
  if(!hListview) return NULL;
 
  lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

  for(i = 0; i < 3; i++)
  {
    lvColumn.cx      = iWidth[i];
    lvColumn.pszText = szTitre[i];
    lvColumn.fmt     = (i == 1) ? LVCFMT_RIGHT : LVCFMT_LEFT;   
    ListView_InsertColumn(hListview, i, &lvColumn );
  }
  ListView_SetExtendedListViewStyleEx(hListview, 0, LVS_EX_GRIDLINES); 
  return hListview;
}

//-----------------------------------------------------------------------------
int ListViewAddItem(HWND hListview, char *szText, int Item, int SubItem)
{
  LV_ITEM lvi;

  if(SubItem)
  {
    lvi.mask       = LVIF_TEXT;  
    lvi.iItem      = Item;
    lvi.iSubItem   = SubItem;
    lvi.pszText    = szText;     
    lvi.cchTextMax = szText ? lstrlen(szText) : 0;
    return ListView_SetItem(hListview, &lvi);
  }
  else
  {
    lvi.mask       = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
    lvi.iItem      = Item;
    lvi.iSubItem   = 0;       
    lvi.state      = 0;
    lvi.stateMask  = 0;
    lvi.iImage     = 0;       
    lvi.pszText    = szText;     
    lvi.cchTextMax = szText ? lstrlen(szText) : 0;
    return ListView_InsertItem(hListview, &lvi);
  } 
}

//-----------------------------------------------------------------------------
void ListViewResize(HWND hListview, HWND hParent)
{
  RECT rcsb, rc;
  GetWindowRect(GetDlgItem(hParent,IDC_STATUS), &rcsb);
  GetClientRect(hParent, &rc); 
  MoveWindow(hListview,
             0, rc.top,
             rc.right - rc.left,
             (rc.bottom - (rcsb.bottom - rcsb.top)) - rc.top, TRUE);
}

//-----------------------------------------------------------------------------
void WINAPI FileList(char *filePath)
{
  WIN32_FIND_DATA fData;
  HANDLE          hfind;
  char            szBuf[64];
  INT64           fileSize;
  DWORD           numFiles = 0;
  FILETIME        ft;
  SYSTEMTIME      st;

  hfind = FindFirstFile(filePath, &fData);
  if(hfind != INVALID_HANDLE_VALUE)
  {
    ListView_DeleteAllItems(hListview);
    do
    {
      if(!(fData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
      {  //Nom de fichier
        ListViewAddItem(hListview, fData.cFileName, numFiles, 0);
        wsprintf(szBuf, " %s", fData.cFileName);
        SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)szBuf);        
        //Taille de fichier
        fileSize = (INT64)(fData.nFileSizeHigh * MAXDWORD) + fData.nFileSizeLow;
        wsprintf(szBuf, "%I64d", fileSize);
        ListViewAddItem(hListview, szBuf, numFiles, 1);
        //Date de modification
        FileTimeToLocalFileTime(&(fData.ftLastWriteTime), &ft);
        FileTimeToSystemTime(&ft, &st);
        wsprintf(szBuf, "%02d/%02d/%4d %02d:%02d",
        st.wDay, st.wMonth, st.wYear, st.wHour, st.wMinute);
        ListViewAddItem(hListview, szBuf, numFiles, 2);
       
        numFiles++;
      }
    }
    while (FindNextFile(hfind, &fData));
    FindClose(hfind);
  }
  wsprintf(szBuf, " Nombre de fichier(s): %d  [%s]", numFiles, filePath);
  SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)szBuf); 
}

//-----------------------------------------------------------------------------
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  switch(uMsg)
  {
    case WM_CREATE:
      hListview = CreateListView(hInst, hWnd);      
      hStatus = CreateStatusWindow(WS_CHILD|WS_VISIBLE, NULL, hWnd, IDC_STATUS);   
      CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)FileList, FILEPATH, 0, NULL);
      return 0;

    case WM_SIZE:
      ListViewResize(hListview, hWnd);   
      SendMessage(hStatus, WM_SIZE, 0, 0);
      return 0;

    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
  }
  return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

//-----------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInst,
                   LPSTR     lpCmdLine,
                   int       nCmdShow)
{
  MSG                  msg;
  HWND                 hWnd;
  WNDCLASSEX           wcex; 
  INITCOMMONCONTROLSEX iccex;
  char szClassName[] = "FileList";

  iccex.dwSize = sizeof(INITCOMMONCONTROLSEX);
  iccex.dwICC  = ICC_LISTVIEW_CLASSES|ICC_BAR_CLASSES;
 
  if(!InitCommonControlsEx(&iccex)) return 0;
 
  wcex.cbSize        = sizeof(WNDCLASSEX);
  wcex.style         = CS_HREDRAW|CS_VREDRAW;;
  wcex.lpfnWndProc   = (WNDPROC)MainWndProc;
  wcex.cbClsExtra    = wcex.cbWndExtra = 0;
  wcex.hInstance     = hInst = hInstance;
  wcex.hCursor       = LoadCursor(NULL, IDC_ARROW);
  wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  wcex.lpszClassName = szClassName; 
  wcex.hIcon         = wcex.hIconSm = NULL;
  wcex.lpszMenuName  = NULL; 

  if(!RegisterClassEx(&wcex)) return 0;
 
  hWnd = CreateWindowEx(0, szClassName, szClassName,
                        WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
                        CW_USEDEFAULT, CW_USEDEFAULT,
                        CW_USEDEFAULT, CW_USEDEFAULT,
                        NULL, NULL, hInstance, NULL);
  if(!hWnd) return 0;
 
  ShowWindow(hWnd, nCmdShow);
  UpdateWindow(hWnd);

  while(GetMessage(&msg, NULL, 0, 0))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return msg.wParam;
}

 




Cette discussion est classé dans : afficher, liste, fichiers, repertoire, listcontrol


Répondre à ce message

Sujets en rapport avec ce message

Comment afficher la liste des fichiers dans le composant List View [ par kanimana ] Bonjour Svp, indiquez moi la fonction qui permettera d'afficher les fichier contenu dans un répertoire dans le composant ListView, avec les détails listbox afficher détails fichiers d'un repertoire [ par bougnat83 ] bonjourVisual C++ 6.0, MFCj'arrive à afficher dans une listbox la liste des fichiers contenu dans un repertoire donné avec :::SendMessage(hListBox, LB list<> & API [ par Taron31 ] Bonjour, je suis confronté à un problème relativement étrange depuis hier et je ne parviens pas à le résoudre. En effet, je fais un programme avec API recuperer des données dans un fichiers. [ par volkukan ] Salut, je compile ce petit programme et tout fonctionne bien a part que j'ai un probleme de segmentation donc de pointeur. Y a til une ame généreuse c Liste des fichiers d'un répertoire distant [ par yerosnimus ] Bonjour,J'ai réussi à faire un programme qui me connecte sur mon serveur FTP.J'aimerai pouvoir affichier la liste des fichiers contenus dans le répert Lister des variables membres [ par tintin72 ] Bonjour,Je voudrais afficher les éléments contenus dans une liste chainée ex:class MaClasse{     public :      char nom[30];     char prenom[30 Récuperer dans un executable la liste d'une multi-selection de fichiers dans un explorateur [ par CoyoteVsBeepBeep ] hello,j'ai developpé un soft de compilation en C++ mode console.son fonctionnement est simple.je place un raccourci vers mon fichier compil.exe dans l Fonction _chdir () c++ [ par Sn00bino_roi_du_petrol ] Bonjour,Je realise un programme qui consiste a lister les fichiers du repertoire que je veux.Mais je n' arrive pas a imposer ma volonté:si je tape:c:\ ListBox et fichier texte [ par lomat62 ] voila je cherche une méthode qui permet d'afficher le contenu d'un fichier texte dans une listbox. cette liste doit s'afficher suite a un clik effectu Ouvrir un buffer dans une liste box [ par mleclaire ] Je voudrait ouvrir les données que j'ai dans mon buffer pour les afficher dans ma listbox.ListBox->Items->??;apres je ne c pas comment afficher le buf


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.