begin process at 2012 05 30 03:44:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

listcontrol : afficher liste fichiers d'un repertoire avec détails


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

listcontrol : afficher liste fichiers d'un repertoire avec détails

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ée 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...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales