Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 11

Chủ đề: hỏi về list- view

  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    hỏi về list- view

    mình muốn tạo 1 danh sách liệt kê tất cả các file trong 1 thư mục và dự định dùng list-view để hiển thị nó.
    nhưng sau khi tạo mới 1 list-view thì chưa thể tiến hành add file list được (cái này lúc đầu mình nghĩ chắc add đơn giản như với EDIT [IMG]images/smilies/Cry.gif[/IMG])
    mình kham khảo trên msdn thì chỉ có add cột, add ảnh, add mục cho list-view thôi [IMG]images/smilies/Cry.gif[/IMG]
    vậy bây h mình muốn hiển thị danh sách tất cả các file thì làm như nào ạ?

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ListView thì đơn giản là ListView thôi, còn danh sách các tập tin trong một thư mực thì bạn phải tự tìm và điền nó vào bằng mã. Nhớ hồi xưa trong Listbox có cả hàm để làm thay việc đó nhưng nó hiện ra cả thư mục con và thư mục gốc, bạn cũng tìm được cách loại bỏ nó trong bài viết trước rồi mà.

    Có lẽ khúc mắc của bạn là chưa nắm được các Macro của ListView :

    Khởi tạo cột : ListView_InsertColumn.
    Thêm một item : ListView_InsertItem.
    Thêm text cho các ô kế tiếp trong 1 item : ListView_SetItemText

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi MHoang
    ListView thì đơn giản là ListView thôi, còn danh sách các tập tin trong một thư mực thì bạn phải tự tìm và điền nó vào bằng mã. Nhớ hồi xưa trong Listbox có cả hàm để làm thay việc đó nhưng nó hiện ra cả thư mục con và thư mục gốc, bạn cũng tìm được cách loại bỏ nó trong bài viết trước rồi mà.

    Có lẽ khúc mắc của bạn là chưa nắm được các Macro của ListView :

    Khởi tạo cột : ListView_InsertColumn.
    Thêm một item : ListView_InsertItem.
    Thêm text cho các ô kế tiếp trong 1 item : ListView_SetItemText
    không. mã code của danh sách các tập tin thì mình biểt rồi.
    nhưng marco của listview để thực hiện việc add mã code trên thì mình đang thắc mắc. các tài liệu cũng chỉ hỗ trợ khởi tạo cột, item.

    - - - Nội dung đã được cập nhật ngày 31-08-2015 lúc 02:25 PM - - -

    Trích dẫn Gửi bởi MHoang
    ListView thì đơn giản là ListView thôi, còn danh sách các tập tin trong một thư mực thì bạn phải tự tìm và điền nó vào bằng mã. Nhớ hồi xưa trong Listbox có cả hàm để làm thay việc đó nhưng nó hiện ra cả thư mục con và thư mục gốc, bạn cũng tìm được cách loại bỏ nó trong bài viết trước rồi mà.

    Có lẽ khúc mắc của bạn là chưa nắm được các Macro của ListView :

    Khởi tạo cột : ListView_InsertColumn.
    Thêm một item : ListView_InsertItem.
    Thêm text cho các ô kế tiếp trong 1 item : ListView_SetItemText
    hoặc ý mình là: marco để chèn danh sách file ấy là j? (

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn xem qua chương trình bên dưới nhé.

    Mã:
    #include<Windows.h>#include<Commctrl.h>#include<shlwapi.h>#pragma comment(lib,"comctl32.lib")#pragma comment(lib,"shlwapi.lib") #define IDC_LISTVIEW    1001#define IDC_EDIT        1002#define IDC_BUTTON      1003#define IDC_STATIC      1004 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam){    static  HWND            hStatic, hButton, hEdit, hListview;    INITCOMMONCONTROLSEX    ice;    int                     cxClient, cyClient, iLength, cCount;    HINSTANCE               hInstance;    TCHAR                   szText[MAX_PATH], szFolder[MAX_PATH];    WIN32_FIND_DATA         wfd;    HANDLE                  hFind;    LVCOLUMN                lvc;    LVITEM                  lvi;     switch (message)    {    case WM_CREATE:        ice.dwSize = sizeof(INITCOMMONCONTROLSEX);        ice.dwICC = ICC_LISTVIEW_CLASSES;        InitCommonControlsEx(&ice);        hInstance = ((LPCREATESTRUCT)lparam)->hInstance;        hListview = CreateWindowEx(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE, WC_LISTVIEW, TEXT(""), WS_CHILD | WS_VISIBLE | LVS_REPORT, 0, 0, 0, 0, hwnd, (HMENU)IDC_LISTVIEW, hInstance, NULL);        hEdit = CreateWindow(TEXT("edit"), TEXT(""), WS_BORDER| WS_CHILD | WS_VISIBLE | ES_CENTER, 0, 0, 0, 0, hwnd, (HMENU)IDC_EDIT, hInstance, NULL);        hButton = CreateWindow(TEXT("button"), TEXT("Do"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 0, 0, 0, hwnd, (HMENU)IDC_BUTTON, hInstance, NULL);        hStatic = CreateWindow(TEXT("static"), TEXT("Folder :"), WS_BORDER | WS_CHILD | WS_VISIBLE | SS_CENTER, 0, 0, 0, 0, hwnd, (HMENU)IDC_STATIC, hInstance, NULL);                lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;        lvc.fmt = LVCFMT_CENTER;        lvc.cx = 60;        lvc.iSubItem = 0;        lvc.pszText = "stt";        ListView_InsertColumn(hListview, 0, &lvc);  //        lvc.cx = 200;        lvc.iSubItem = 1;        lvc.pszText = "Name";        ListView_InsertColumn(hListview, 1, &lvc);        SetFocus(hEdit);        return 0;    case WM_SIZE:        cxClient = LOWORD(lparam);        cyClient = HIWORD(lparam);        MoveWindow(hListview, 20, 20, cxClient - 40, cyClient - 95, TRUE);        MoveWindow(hEdit, 120, cyClient - 50, cxClient - 240, 22, TRUE);        MoveWindow(hButton, cxClient - 100, cyClient - 50, 80, 22, TRUE);        MoveWindow(hStatic, 20, cyClient - 50, 80, 22, TRUE);        return 0;    case WM_COMMAND:        switch (LOWORD(wparam))        {        case IDC_BUTTON:            iLength = GetWindowTextLength(hEdit);            if (iLength == 0)            {                MessageBox(hwnd, TEXT("Error or text is NULL"), TEXT("Demo Listview"), MB_OK | MB_ICONEXCLAMATION);                SetFocus(hEdit);                return 0;            }            GetWindowText(hEdit, szFolder, iLength + 1);            if (!PathIsDirectory(szFolder))            {                MessageBox(hwnd, TEXT("Path is invalid"), TEXT("Demo Listview"), MB_OK | MB_ICONEXCLAMATION);                SetFocus(hEdit);                return 0;            }            wsprintf(szText, TEXT("%s\\*.*"), szFolder);            hFind = FindFirstFile(szText, &wfd);            if (hFind == INVALID_HANDLE_VALUE)            {                MessageBox(hwnd, TEXT("Folder is empty"), TEXT("Demo Listview"), MB_OK | MB_ICONEXCLAMATION);                SetFocus(hEdit);                return 0;            }            ListView_DeleteAllItems(hListview);            do            {// Đếm và ghi vào Listview các tập tin và thư mục đã tìm được                cCount = ListView_GetItemCount(hListview);                lvi.mask = LVIF_TEXT;                lvi.iItem = cCount;                lvi.iSubItem = 0;                lvi.pszText = szText;                wsprintf(szText, TEXT("%d"), cCount + 1);                ListView_InsertItem(hListview, &lvi);                ListView_SetItemText(hListview, cCount, 1, wfd.cFileName);            } while (FindNextFile(hFind, &wfd));            FindClose(hFind);            return 0;        }        break;    case WM_DESTROY:        PostQuitMessage(0);        return 0;    }    return DefWindowProc(hwnd, message, wparam, lparam);} int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmd, int nShow){    HWND        hwnd;    MSG         msg;    WNDCLASS    w;     w.cbClsExtra = 0;    w.cbWndExtra = 0;    w.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);    w.hCursor = LoadCursor(NULL, IDC_ARROW);    w.hIcon = LoadIcon(NULL, IDI_APPLICATION);    w.hInstance = hInstance;    w.lpfnWndProc = WndProc;    w.lpszClassName = TEXT("Demo Listview");    w.lpszMenuName = NULL;    w.style = CS_HREDRAW | CS_VREDRAW;    if (!RegisterClass(&w))        return 0;    hwnd = CreateWindow(w.lpszClassName, w.lpszClassName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);    if (!hwnd)        return 0;    ShowWindow(hwnd, nShow);    UpdateWindow(hwnd);    while (GetMessage(&msg, NULL, 0, 0))    {        TranslateMessage(&msg);        DispatchMessage(&msg);    }    return msg.wParam;}

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi MHoang
    Bạn xem qua chương trình bên dưới nhé.

    Mã:
    #include<Windows.h>#include<Commctrl.h>#include<shlwapi.h>#pragma comment(lib,"comctl32.lib")#pragma comment(lib,"shlwapi.lib") #define IDC_LISTVIEW    1001#define IDC_EDIT        1002#define IDC_BUTTON      1003#define IDC_STATIC      1004 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam){    static  HWND            hStatic, hButton, hEdit, hListview;    INITCOMMONCONTROLSEX    ice;    int                     cxClient, cyClient, iLength, cCount;    HINSTANCE               hInstance;    TCHAR                   szText[MAX_PATH], szFolder[MAX_PATH];    WIN32_FIND_DATA         wfd;    HANDLE                  hFind;    LVCOLUMN                lvc;    LVITEM                  lvi;     switch (message)    {    case WM_CREATE:        ice.dwSize = sizeof(INITCOMMONCONTROLSEX);        ice.dwICC = ICC_LISTVIEW_CLASSES;        InitCommonControlsEx(&ice);        hInstance = ((LPCREATESTRUCT)lparam)->hInstance;        hListview = CreateWindowEx(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE, WC_LISTVIEW, TEXT(""), WS_CHILD | WS_VISIBLE | LVS_REPORT, 0, 0, 0, 0, hwnd, (HMENU)IDC_LISTVIEW, hInstance, NULL);        hEdit = CreateWindow(TEXT("edit"), TEXT(""), WS_BORDER| WS_CHILD | WS_VISIBLE | ES_CENTER, 0, 0, 0, 0, hwnd, (HMENU)IDC_EDIT, hInstance, NULL);        hButton = CreateWindow(TEXT("button"), TEXT("Do"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 0, 0, 0, hwnd, (HMENU)IDC_BUTTON, hInstance, NULL);        hStatic = CreateWindow(TEXT("static"), TEXT("Folder :"), WS_BORDER | WS_CHILD | WS_VISIBLE | SS_CENTER, 0, 0, 0, 0, hwnd, (HMENU)IDC_STATIC, hInstance, NULL);                lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;        lvc.fmt = LVCFMT_CENTER;        lvc.cx = 60;        lvc.iSubItem = 0;        lvc.pszText = "stt";        ListView_InsertColumn(hListview, 0, &lvc);  //        lvc.cx = 200;        lvc.iSubItem = 1;        lvc.pszText = "Name";        ListView_InsertColumn(hListview, 1, &lvc);        SetFocus(hEdit);        return 0;    case WM_SIZE:        cxClient = LOWORD(lparam);        cyClient = HIWORD(lparam);        MoveWindow(hListview, 20, 20, cxClient - 40, cyClient - 95, TRUE);        MoveWindow(hEdit, 120, cyClient - 50, cxClient - 240, 22, TRUE);        MoveWindow(hButton, cxClient - 100, cyClient - 50, 80, 22, TRUE);        MoveWindow(hStatic, 20, cyClient - 50, 80, 22, TRUE);        return 0;    case WM_COMMAND:        switch (LOWORD(wparam))        {        case IDC_BUTTON:            iLength = GetWindowTextLength(hEdit);            if (iLength == 0)            {                MessageBox(hwnd, TEXT("Error or text is NULL"), TEXT("Demo Listview"), MB_OK | MB_ICONEXCLAMATION);                SetFocus(hEdit);                return 0;            }            GetWindowText(hEdit, szFolder, iLength + 1);            if (!PathIsDirectory(szFolder))            {                MessageBox(hwnd, TEXT("Path is invalid"), TEXT("Demo Listview"), MB_OK | MB_ICONEXCLAMATION);                SetFocus(hEdit);                return 0;            }            wsprintf(szText, TEXT("%s\\*.*"), szFolder);            hFind = FindFirstFile(szText, &wfd);            if (hFind == INVALID_HANDLE_VALUE)            {                MessageBox(hwnd, TEXT("Folder is empty"), TEXT("Demo Listview"), MB_OK | MB_ICONEXCLAMATION);                SetFocus(hEdit);                return 0;            }            ListView_DeleteAllItems(hListview);            do            {// Đếm và ghi vào Listview các tập tin và thư mục đã tìm được                cCount = ListView_GetItemCount(hListview);                lvi.mask = LVIF_TEXT;                lvi.iItem = cCount;                lvi.iSubItem = 0;                lvi.pszText = szText;                wsprintf(szText, TEXT("%d"), cCount + 1);                ListView_InsertItem(hListview, &lvi);                ListView_SetItemText(hListview, cCount, 1, wfd.cFileName);            } while (FindNextFile(hFind, &wfd));            FindClose(hFind);            return 0;        }        break;    case WM_DESTROY:        PostQuitMessage(0);        return 0;    }    return DefWindowProc(hwnd, message, wparam, lparam);} int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmd, int nShow){    HWND        hwnd;    MSG         msg;    WNDCLASS    w;     w.cbClsExtra = 0;    w.cbWndExtra = 0;    w.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);    w.hCursor = LoadCursor(NULL, IDC_ARROW);    w.hIcon = LoadIcon(NULL, IDI_APPLICATION);    w.hInstance = hInstance;    w.lpfnWndProc = WndProc;    w.lpszClassName = TEXT("Demo Listview");    w.lpszMenuName = NULL;    w.style = CS_HREDRAW | CS_VREDRAW;    if (!RegisterClass(&w))        return 0;    hwnd = CreateWindow(w.lpszClassName, w.lpszClassName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);    if (!hwnd)        return 0;    ShowWindow(hwnd, nShow);    UpdateWindow(hwnd);    while (GetMessage(&msg, NULL, 0, 0))    {        TranslateMessage(&msg);        DispatchMessage(&msg);    }    return msg.wParam;}
    đoạn code của bạn e nhìn tàn dòng code quen thuộc của api. các đoạn code của listview cũng dễ hiểu.
    mình đọc các tài liệu listview trên mạng nó rờm rà và khó hiểu trong lúc đọc mình ko hình dung được những marco ấy sẽ nằm đâu trong bài code của mình
    mà phần khai báo thư viện:
    #include<shlwapi.h>
    #pragma comment(lib,"comctl32.lib")
    #pragma comment(lib,"shlwapi.lib")

    cả 3 thư viện trên nghĩa là j ạ? mình chưa gặp bao giờ

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi MHoang
    Khi chúng ta xây dựng 1 dự án trong IDE nào đó, thông thường chính IDE đã đưa sẵn vào dự án một số thư viện nhập cơ bản như kernel32.lib; user32.lib; gdi32.lib.
    Trong chương trình trên, chúng ta sử dụng ListView - điều khiển này không được đưa sẵn vào dự án, Windows API có khai báo các điều khiển này trong <Commctrl.h> và khi liên kết cần thư viện nhập là "comctl32.lib".
    Cũng tương tự, PathIsDirectory là không có sẵn, nó được khai báo trong <shlwapi.h> và cần liên kết với "shlwapi.lib". Nói chung khi đụng chạm tới xử lý đường dẫn, nên tham khảo Windows Shell, nó có một tập các tiện ích rất tốt, bạn có thể tham khảo trong https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
    vâng. thank bạn [IMG]images/smilies/applause.gif[/IMG]

  7. #7
    Khi chúng ta xây dựng 1 dự án trong IDE nào đó, thông thường chính IDE đã đưa sẵn vào dự án một số thư viện nhập cơ bản như kernel32.lib; user32.lib; gdi32.lib.
    Trong chương trình trên, chúng ta sử dụng ListView - điều khiển này không được đưa sẵn vào dự án, Windows API có khai báo các điều khiển này trong <Commctrl.h> và khi liên kết cần thư viện nhập là "comctl32.lib".
    Cũng tương tự, PathIsDirectory là không có sẵn, nó được khai báo trong <shlwapi.h> và cần liên kết với "shlwapi.lib". Nói chung khi đụng chạm tới xử lý đường dẫn, nên tham khảo Windows Shell, nó có một tập các tiện ích rất tốt, bạn có thể tham khảo trong https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi MHoang
    Khi chúng ta xây dựng 1 dự án trong IDE nào đó, thông thường chính IDE đã đưa sẵn vào dự án một số thư viện nhập cơ bản như kernel32.lib; user32.lib; gdi32.lib.
    Trong chương trình trên, chúng ta sử dụng ListView - điều khiển này không được đưa sẵn vào dự án, Windows API có khai báo các điều khiển này trong <Commctrl.h> và khi liên kết cần thư viện nhập là "comctl32.lib".
    Cũng tương tự, PathIsDirectory là không có sẵn, nó được khai báo trong <shlwapi.h> và cần liên kết với "shlwapi.lib". Nói chung khi đụng chạm tới xử lý đường dẫn, nên tham khảo Windows Shell, nó có một tập các tiện ích rất tốt, bạn có thể tham khảo trong https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
    mình đang muốn lồng đoạn code sau để chương trình không những hiển thị các thư mục mà còn hiển thị tất cả các file trong thư mục ấy:
    Mã:
    #include <conio.h>
    #include <windows.h>
    #include <stdio.h>
     
    void EnumerateFolders (const char* parent)
    {
        WIN32_FIND_DATA fd;
        char folder[MAX_PATH];
        sprintf(folder, "%s\\*.*", parent);
     
        HANDLE hFind = FindFirstFile (folder, &fd);
     
        if (hFind != INVALID_HANDLE_VALUE)
        {
            do {
                if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                {
                    if (strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, ".."))
                    {
                        printf ("%s\\%s
    ", parent, fd.cFileName);
                        char child[MAX_PATH];
                        sprintf(child, "%s\\%s", parent, fd.cFileName);
                        EnumerateFolders (child);
                    }              
                }
                else
                {
                    printf("%s
    ", fd.cFileName);
                }
            } while (FindNextFile (hFind, &fd));
            FindClose (hFind);
        }
    }
     
     
    int main()
    {
        EnumerateFolders("C:");
        getch();
    }
    nhưng không thành công, chương trình thậm chí không đọc file nữa [IMG]images/smilies/Cry.gif[/IMG]
    bạn có thể hướng dẫn mình được không?

  9. #9
    Trích dẫn Gửi bởi MHoang
    Xem qua thì thấy Logic của bạn là đúng, không biết nó mắc lỗi ntn. Nếu có chỗ không rõ thì chắc chỉ do bạn phân bổ các dòng xuất không được hợp lý nên khó nhìn. Bạn hãy thử cho nó đệ quy ít thôi, ví dụ cho thư mục khởi tạo rất sâu như : ("C:\\thumucA\\thumucB\\thumucC") để kiểm tra nó có đúng như ý bạn không. Lưu ý là có thể có thư mục hay tập tin ẩn, tập tin hệ thống. Còn muốn kết xuất tốt hơn thì nên kết xuất theo phân cấp, Thư mục gốc sát lề, con của gốc canh lề 2 khoảng trống, con của con của gốc canh lề 4, ...
    Trích dẫn Gửi bởi MHoang
    Xem qua thì thấy Logic của bạn là đúng, không biết nó mắc lỗi ntn. Nếu có chỗ không rõ thì chắc chỉ do bạn phân bổ các dòng xuất không được hợp lý nên khó nhìn. Bạn hãy thử cho nó đệ quy ít thôi, ví dụ cho thư mục khởi tạo rất sâu như : ("C:\\thumucA\\thumucB\\thumucC") để kiểm tra nó có đúng như ý bạn không. Lưu ý là có thể có thư mục hay tập tin ẩn, tập tin hệ thống. Còn muốn kết xuất tốt hơn thì nên kết xuất theo phân cấp, Thư mục gốc sát lề, con của gốc canh lề 2 khoảng trống, con của con của gốc canh lề 4, ...
    phần đấy mình code riêng bên devC++ chứ chưa áp vào bài code WIN32 được
    có thể do mình chưa hiểu rõ các hàm chuyển từ C sang API
    còn nữa, trên C mình tạo hàm con riêng để liệt kê các file và sử dụng hoàn toàn bằng các câu lệnh C. lúc chuyển sang API thì nó ko chạy đc

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mã bên dưới là mình chỉnh mã của bạn trên Dev-C++5.11 với kiểu dự án Console trên C. Chương trình chỉ thụt lùi vào 2 Spacebar cho mỗi File hoặc Directory con, thư mục là đường dẫn đầy đủ được bao trong cặp "[]" còn tập tin thì chỉ hiển thị tên trong cặp "<>".
    Nhớ là số dòng hiển thị quá nhiều thì có thể bị cắt bớt trong Console và các hàm đếm có thể tính theo thứ tự AnphaBet nhé.

    Mã:
    #include <conio.h>#include <windows.h>#include <stdio.h> void DisplayString(const char * szString, int nSpace){    int                 i;    for (i = 0; i < nSpace; i++)        printf(" ");    printf(szString);    printf("
    ");}// Phân cấp như treeviewvoid EnumerateAll(const char * szParent, int nSpace){    WIN32_FIND_DATA     fd;    HANDLE              hFind;    char                szString[MAX_PATH];     // Hiển thị thư mục này trong cặp ngoặc []    sprintf(szString, "[%s]", szParent);    DisplayString(szString, nSpace);    // Đếm các thư mục và tập tin trong nó    sprintf(szString, "%s\\*", szParent);    if (INVALID_HANDLE_VALUE != (hFind = FindFirstFile(szString, &fd)))    {        do        {            if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)     // Là thư mục            {                if (fd.cFileName[0] != '.')                         // Không phải thư mục gốc hoặc thư mục cha                {                    sprintf(szString, "%s\\%s", szParent, fd.cFileName);                    EnumerateAll(szString, nSpace + 2);                }            }            else                                                    // Là tập tin            {                sprintf(szString, "<%s>", fd.cFileName);            // Hiển thị trong cặp ngoặc <>                DisplayString(szString, nSpace + 2);            }        }        while (FindNextFile(hFind, &fd));        FindClose(hFind);    }}int main(){    EnumerateAll("C:\\HOANG\\Console", 0);              // Thay đổi đường dẫn khác để kiểm tra    getch();}

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •