Directory |
A directory or a folder is set of files and folders. Un directorio o carpeta es un conjunto de archivos y carpetas. |
FolderDlg |
It is a Windows standard dialog so that user can choose a directory (a folder). It is very to the Windows standard dialog to choose a file, but the FolderDlg dialog allows choosing only folders. Es un diálogo estándar de Windows para que el usuario escoja un directorio (una carpeta). Es muy semejante al diálogo estándar para escoger un archivo, pero el diálogo de FolderDlg permite escoger solamente carpetas. |
_tfinddata_t |
It is a structure to store file or directory information. It stores the name, size, write time, etc., of a file or a folder. Wintempla provides the class Sys::FileDirectory to list the files and folder of a folder. Es una estructura para almacenar la información de archivo o un directorio. Esta almacena, el nombre, tamaño, tiempo de escritura, etc., de un archivo o una carpeta. Wintempla proporciona la clase Sys::FileDirectory para lista los archivos y carpetas de un folder. |
Problem 1 |
Create a Wintempla Dialog application called MyDir to list the files and folders when the user selects a folder using the class Sys::FileDirectory. Cree una aplicación de Wintempla de diálogo llamada MyDir para listar los archivos y carpetas cuando el usuario selecciona una carpeta usando la clase Sys::FileDirectory. |
MyDir.cpp |
... void MyDir::Window_Open(Win::Event& e) { } void MyDir::btBrowse_Click(Win::Event& e) { Win::FolderDlg dlg; wchar_t * path = dlg.BeginDialog(hWnd, L"Folder"); if (path != NULL) { wchar_t text[1024]; _snwprintf_s(text, 1024, _TRUNCATE, L"%s\\*.*", path); vector<_tfinddata_t> fileList; Sys::FileDirectory::GetFileList(text, fileList); vector<_tfinddata_t>::iterator p = fileList.begin(); const vector<_tfinddata_t>::iterator pEnd = fileList.end(); wstring names; for( ; p != pEnd; p++) { if ((p->attrib & _A_SUBDIR) != 0) { names += L"DIR \t"; } else { names += L"FILE\t"; } names += p->name; names += L"\r\n"; } tbxList.SetWindowText(names.c_str()); } } |
Problem 2 |
Modify the program of last problem using _tfindfirst and _tfinddata_t to list files and folders. Modifique el programa del último usando _tfindfirst and _tfinddata_t para listar los archivos y folders. |
MyDir.cpp |
... void MyDir::Window_Open(Win::Event& e) { } void MyDir::btBrowse_Click(Win::Event& e) { Win::FolderDlg dlg; wchar_t * path = dlg.BeginDialog(hWnd, L"Folder"); if (path != NULL) { wchar_t text[1024]; _snwprintf_s(text, 1024, _TRUNCATE, L"%s\\*.*", path); wstring names; // struct _tfinddata_t item; intptr_t sequence = 0; intptr_t result = 0; for(sequence = _tfindfirst((wchar_t*)text, &item); result == 0; result = _tfindnext(sequence, &item)) { if (sequence == -1) break; if ((item.attrib & _A_SUBDIR) != 0) { names += L"DIR \t"; } else { names += L"FILE\t"; } names += item.name; names += L"\r\n"; } _findclose(sequence); tbxList.SetWindowText(names.c_str()); } |
Tip |
Wintempla provides the following macros:
Wintempla proporciona los siguiente macros:
|