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


Автор: Гость_Гость 12.1.2005, 18:47
Приложение C++/MFC. Среда разработки MS Visual .NET

Задача: Необходимо открывать файлы, с возможностью множественного одновременного выбора.

Проблема: Не могу заставить CFileDialog предьявлять пользователю файлы не в виде крупных thumbnail'ов, а в виде простого списка. Также хотелось бы самому установить произвольный размер диалога CFileDialog. Копался в инете и в MSDN - не помогло.

Автор: Гость_Гость 13.1.2005, 22:56
Неужели нет никаких идей?
Кто-нибудь может подсказать хотя бы возможные пути решения проблемы?
Как еще до строки типа myFileDialog.DoModal(); сказать CFileDialog'у, что он должен быть таких-то размеров по XY и должен показывать файлы в виде списка? Можно ли это сделать не создавая произвольный класс от CFileDialog или подобное создание необходимо?

Автор: Coocky 13.1.2005, 23:50
Цитата
Кто-нибудь может подсказать хотя бы возможные пути решения проблемы?

Да создай ты свое окно СFileDialog...Какие еще могут быть решения.Ты когда -нибудь видел в Винде окно отличное от того,что они тебе предлагают?А вдруг тебе еще и CStatusBar нужен в окне?Ну нет его сам....У меня,кстати есть диалог просмотра каталога.Могу дать.Добавишь еще фунции ?!

Автор: S.A.P. 13.1.2005, 23:56
Цитата
Необходимо открывать файлы, с возможностью множественного одновременного выбора.
ставь флаг OFN_ALLOWMULTISELECT
Код

CFileDialog   dlg( TRUE, NULL, NULL, [b]OFN_ALLOWMULTISELECT[/b], NULL, NULL );


Цитата
Не могу заставить CFileDialog предьявлять пользователю файлы не в виде крупных thumbnail'ов, а в виде простого списка
а что такое thumbnail'ов ?

Добавлено @ 23:58
Цитата
должен показывать файлы в виде списка
а он разве показывает не ввиде списка. Четко излагайте свои мысли.

Автор: DENNN 14.1.2005, 10:41
Цитата
Ты когда -нибудь видел в Винде окно отличное от того,что они тебе предлагают?

Миллион раз. Взять то же фотошоп.
В процедуре создания FileDialog пиредусмотренно использование шаблонов из программы и есть функции по трансляции событий окна в программу. Читайте внимательно MSDN

Автор: Гость_Гость 14.1.2005, 21:47
Perchilla

Цитата
а он разве показывает не ввиде списка. Четко излагайте свои мысли.


Я, конечно, извиняюсь, но что Вы понимаете по четкостью изложения? По-моему, все сформулировано предельно ясно и кратко. Однако, могу пояснить - при создании диалога CFileDialog в нем можно устанавливать различный стиль просмотра файлов - в виде списка (List), Tiles, Thumbnails, Icons, Detailes. В зависимости от стиля, список файлов в диалоге будет отображаться по-разному - достаточно мелкими формальными надписями или достаточно крупными иконками. Дело в том, что я хочу установить определенный стиль окна (в данном случае - List) еще до демонстрации диалога пользователю. На данный момент, у меня диалог показывает как раз в виде thumbnail'ов - крупных иконок, копирующих, в миниатюре, контент графического файла.

DENNN

Цитата
В процедуре создания FileDialog пиредусмотренно использование шаблонов из программы и есть функции по трансляции событий окна в программу. Читайте внимательно MSDN


Во-первых, я не знаком с процессом создания шаблонов. В MSDN не нашел. Во-вторых, нельзя ли без этого обойтись, т.е. просто послать какое-нибудь событие, например, данному диалогу? Буду благодарен, если приведете пример.


Coocky

Цитата
Да создай ты свое окно СFileDialog...Какие еще могут быть решения.


Я уже тоже об этом думал, но просто хочу разобраться.


P.S. А что насчет размеров окна этого диалога - можно его определить заранее?

Автор: DENNN 15.1.2005, 16:06
Цитата
В MSDN не нашел.

Вот выдержка из http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxstructures/openfilename.asp
часть из описания флагов OPENFILENAME Structure
Цитата

OFN_ENABLETEMPLATE
    Indicates that the lpTemplateName member is a pointer to the name of a dialog template resource in the module identified by the hInstance member. If the OFN_EXPLORER flag is set, the system uses the specified template to create a dialog box that is a child of the default Explorer-style dialog box. If the OFN_EXPLORER flag is not set, the system uses the template to create an old-style dialog box that replaces the default dialog box.
OFN_ENABLETEMPLATEHANDLE
    Indicates that the hInstance member identifies a data block that contains a preloaded dialog box template. The system ignores lpTemplateName if this flag is specified. If the OFN_EXPLORER flag is set, the system uses the specified template to create a dialog box that is a child of the default Explorer-style dialog box. If the OFN_EXPLORER flag is not set, the system uses the template to create an old-style dialog box that replaces the default dialog box.


И так далее. Естественно, после заполнения структуры лучше использовать чистый WinAPI
Код

::GetOpenFileName()


Автор: Гость_VIKO 3.2.2005, 02:17
Можно создать класс обертку - наследовать от CFileDialog и уже с ним делать все что нужно - изменять свойства и т.д. Посмотри на http://www.codeproject.com там есть хорошие примеры

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