Я использую CFileDialog, чтобы позволить пользователю выбирать png изображения для отображения, но для png файла я считаю, что просмотр списка неуместен, потому что пользователь должен каждый раз менять вид на Большой значок, поэтому необходимо по умолчанию установить вид на «Большой». Значок «вместо представления списка.
Вот что я сделал, пожалуйста, дайте мне знать, что я должен добавить, чтобы получить вид большого значка. Я использую Windows 7 VS 2010 MFC C ++.
CFileDialog dlg(TRUE, _T("png"), 0, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST, _T("Portable Network Graphics (.png)|*.png||"));
static char szTitle[] = _T("Select Icon");
dlg.m_ofn.lpstrTitle = szTitle;
static char szInitPath[] = _T("D:\\pngImagelist");
dlg.m_ofn.lpstrInitialDir = szInitPath;
Нужна помощь всех экспертов. Заранее спасибо 🙂
Вам нужно получить IShellBrowser и использовать QueryActiveShellView для получения представления оболочки, затем QI для IFolderView в представлении оболочки и вызвать IFolderView :: SetCurrentViewMode.
В диалоговом окне файла стиля Vista (то есть, если вы не отключаете автоматическое обновление в конструкторе CFileDialog и работаете в Vista +), вы можете получить IShellBrowser из объекта IFileDialog через его интерфейс IServiceProvider (QueryService с SID_STopLevelBrowser) , В диалоговом окне файла стиля Windows 2000 вы можете отправить недокументированное сообщение WM_GETISHELLBROWSER в диалоговое окно файла, чтобы получить его интерфейс IShellBrowser. Пример можно найти на http://blog.joycode.com/jiangsheng/archives/2004/09/17/33756.joy.
Это непростая задача, так как требует использования Spy ++ и понимания базовой среды Windows Shell. Элемент управления представлением списка, вложенный в CFileDialog, на самом деле представляет собой то, что видит оболочка Windows. Spy ++ покажет, что на самом деле это «ShellDLL_DefView». Вы можете получить доступ к этому элементу управления, используя методологию в Пол ДиЛаскья статья. Оно датировано, но идея должна быть действительной.