У меня проблема со вчерашнего утра, которая уже сводит меня с ума.
Проблема в том, что я хочу создать диалог для поиска папки. Для каждой ОС старше Vista я использую метод SHBrowseForFolder(), который отлично работает (также для Vista и новее).
Для Vista и новее я хотел бы использовать IFileDialog из-за производительности, более приятного графического интерфейса и т. д.
Когда я пытаюсь скомпилировать реализованный код для IFileDialog, я получаю следующую ошибку «Нет GUID»:
Код:
IFileDialog *pfd = NULL;
HRESULT hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pfd));
Ошибка:
error C2787: 'IFileDialog' : no GUID has been associated with this object
В разговоре с моим начальником он сказал мне, что мы не можем установить флаг компилятора на Vista и выше из-за совместимости с XP. Проблема была решена здесь с установкой флага компилятора: from-vc-6-0">Как использовать iFileDialog в проекте VC++ 2010, преобразованном из VC++ 6.0?
Можно ли в любом случае использовать IFileDialog? Может быть, класс можно связать динамически?
Не подскажете, как реализовать? Заранее спасибо.