Re[3]: FindFirstFile FindNextFile возвращают не все файлы
От: Аноним  
Дата: 31.08.05 18:50
Оценка:
Здравствуйте, To4kuH, Вы писали:

TH>определил, кстати, простым способом. вывел значеня этого поля для всех файлов и папок директории


А, если применительно к C++?
Вот мой код:

void CFmanagerView::UpdateRightPanel(void)
{
    //объявление переменных
    CListCtrl& RightList = GetListCtrl();
    HANDLE hFindFile;    //handle used in a subsequent call
    //    to FindNextFile or FindClose.
    WIN32_FIND_DATA lpFindFileData;     char maskofext[] = "*.*";
    char strFullPath[MAX_PATH]; //строка, которая хранит полный путь + маска
    char strTempPath[MAX_PATH]; //строка, которая хранит полный путь 
    int iList = 0;
    SHFILEINFO info;
    DWORD dwRet;
    HIMAGELIST hImgList;
    DWORD laster;
    RightList.DeleteAllItems();
    strcpy(strFullPath, strCurrentRightDir);
    if (strFullPath[lstrlen(strFullPath)-1] != '\\') 
        strcat(strFullPath, "\\");
    strcat(strFullPath, maskofext);
    
    //////////////////////////////////////////////////////////////////////////
    hFindFile = FindFirstFile(
        strFullPath,                //путь для поиска
        &lpFindFileData);
    if (INVALID_HANDLE_VALUE != hFindFile  ) {    //если не ошибка, то открываем цикл
        do {
                //пропускаем точку
                if(strcmp(lpFindFileData.cFileName, "."))
                {
                    // Здесь получаем иконку из system imagelist
                        //Формируем полный путь для данного файла
                    strcpy(strTempPath, strCurrentRightDir);
                    if (strTempPath[lstrlen(strTempPath)-1] != '\\') 
                        strcat(strTempPath, "\\");
                    strcat(strTempPath, lpFindFileData.cFileName);
                    dwRet = SHGetFileInfo (strTempPath, FILE_ATTRIBUTE_NORMAL,
                        &info, sizeof(SHFILEINFO), SHGFI_USEFILEATTRIBUTES
 | SYSICONINDEX | SHGFI_SMALLICON );
                    hImgList = reinterpret_cast<HIMAGELIST>( dwRet );
                    //присоединяем ее к нашему imagelist' у
                    ASSERT ( NULL != hImgList );
                    if ( NULL != m_imlSmallDrives.GetSafeHandle() )    //если уже присоединен 
                        //то удаляем его из imagelist'а
                    {
                        m_imlSmallDrives.Detach();
                    }
                    VERIFY ( m_imlSmallDrives.Attach ( hImgList ));
                    RightList.SetImageList(&m_imlSmallDrives, LVSIL_SMALL );    
                    ASSERT(RightList.GetImageList(LVSIL_SMALL) == &m_imlSmallDrives);//?
                    //////////////////////////////////////////////////////////////////////////
                    SHFILEINFO sfi;
                    SHGetFileInfo (strTempPath, 0, &sfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_DISPLAYNAME | SHGFI_SMALLICON);
                    RightList.InsertItem(iList, lpFindFileData.cFileName , sfi.iIcon);
                    iList++;
                }
            } while(FindNextFile(hFindFile, &lpFindFileData) != NULL);    
        FindClose(hFindFile);    }
}


Исправлено форматирование кода. 2Аноним — отбивайте код тэгами, имейте уважение к тем кто будет читать ваше сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.