![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Вопрос по выбору группы файлов в CFileDialog.
Помогите начинающему в Visual C++ и MFC. Проблема в следующем: при выборе нескольких файлов в CFileDialog (флаг OFN_ALLOWMULTISELECT установлен) следующим кодом
у меня получается такая фигня - если выбираю подряд более 11 файлов или вразброс более 10 то выбора не происходит, функция тупо не выполняется. Как с этим бороться ? Заранее Всем спасибо за ответы и подсказки. |
|||
|
||||
| AndyY |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
думаю проблема в размере буфера.
MFC в файловом диалоге использует свой буфер размера _MAX_PATH для выбранных файлов можно модифицировать код так: char my_buffer[32000]; OpenMediaDlg.m_ofn.lpstrFile = my_buffer; OpenMediaDlg.m_ofn.nMaxFile = sizeof( my_buffer ); ну и дальше DoModal |
|||
|
||||
| AndreySol |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Я попробовал сделать
Но получилась такая фигня: если nMaxFile = sizeof( my_buffer ) то при вызове файл-диалога происходит ошибка
ругается на последнюю строку, при этом я вычислил что значение nOffset почемуто равно nMaxFile + 6. Попробовал тупо обойти это модифицировав код:
Все стало работать, но получился другой заскок - после этого в строке файл-диалога "Имя файла" вместо заданного мной фильтра появляется какая-то хренотень, и выбрать файлы можно только предварительно погоняв выбор в "Тип файла". Так как же всетаки с этим правильно бороться? |
||||||
|
|||||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
||||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Посмотрел я эту статью - не то по моему. Может еще какие мысли на эту тему ?
|
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Почему? Слишком сложно? Это как раз про то как правильно решить проблему с маленьким буфером, что бы всё всегда отрабатывало корректно, а не в только частных случаях |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Я не увидел этого решения, а может и не понял. Подскажите если можно на конкретном примере - допустим как надо модифицировать мой исходный код, что бы все заработало.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |