Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Список файлов


Автор: Aline 22.1.2009, 16:02
Для получения списка файлов из директории использую:
Код

::SendMessage(CSdiDialog::m_listbox, LB_DIR, DDL_READWRITE | DDL_READONLY | DDL_HIDDEN | DDL_SYSTEM | DDL_DIRECTORY | DDL_DRIVES | DDL_ARCHIVE, (LPARAM)((LPSTR)"C:\\*.*"));


Но почему на экран выводится только список дисков, типа:
[a]
[c]
[d]
[e]

Что не так?

Автор: voov 22.1.2009, 18:49
Похоже все так.
Цитата

DDL_DIRECTORY
    Includes subdirectories. Subdirectory names are enclosed in square brackets ([ ]).
DDL_DRIVES
    All mapped drives are added to the list. Drives are listed in the form [-x-], where x is the drive letter.

Т.е. у тебя выводится не список дисков, а список всех файлов, но от самого корня. А в корне у тебя только диски.

Возможно неправильно задаешь путь. Попробуй поексперементировать с последним параметром.
Вот нашел такой вариант
Код

SendMessage(ListBox1.Handle,LB_DIR,DDL_DIRECTORY or DDL_ARCHIVE or DDL_HIDDEN or DDL_READONLY or DDL_SYSTEM or DDL_READWRITE,Integer(PChar('C:\*.*'))); 

Автор: Aline 23.1.2009, 08:32
voov, путь я вроде правильно задаю. Твой вариант в качестве примера не подходит, он в MFC не работает

Автор: voov 23.1.2009, 11:15
Да я же не настаиваю на своем примере. Я предлагаю тебе 
Цитата(voov @  22.1.2009,  18:49 Найти цитируемый пост)
поексперементировать с последним параметром

попробуй, например, вместо "C:\\*.*" дать "*.*" и посмотри как отработает.

Для получения списка файлов в лист бокс есть еще такая функция
Цитата

DlgDirList Function
--------------------------------------------------------------------------------
Replaces the contents of a list box with the names of the subdirectories and files in a specified directory. You can filter the list of names by specifying a set of file attributes. The list can optionally include mapped drives

Автор: Aline 23.1.2009, 11:18
voov, я изначально поставила последним аргументом "*.*" и он мне выдал список дисков, я порадовалась, что работает, указала другой путь, а он мне всё правно список дисков выдал smile
Спасибо за информацию, попробую ещё другую функцию

Автор: voov 23.1.2009, 12:17
 smile 

Aline, мне никогда ранее не приходилось получать список файлов таким способом, хотя уже видел подобные примеры. И вот глядя на эту тему меня замучило любопытство. После недолгих раздумий и переборов лень, сделал тестовый проектик и вставил строку кода один в одни из твоего первого поста (поменял только первый парамерт) и... неповеришь, но у меня выводит полный список файлов и каталогов на диске С + список дисков.

Автор: Aline 27.1.2009, 16:09
voov, может быть это у меня какие то настройки в Windows другие, специфические? smile

Автор: voov 27.1.2009, 16:25
Aline, не могу сказать наверняка. Выкладываю свой тестик - после запуска в листбоксе справа отображается содержимое диска С. Проверь. Если будет работать как твоя программа, значит проблема не в коде. Если иначе - значит сравним код.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)