Использование API-интерфейса GetOpenFileName () в VC ++ для открытия папки & amp; НЕ файл

BOOL WINAPI GetOpenFileName (
Inout LPOPENFILENAME lpofn
);

используется для открытия файла в программе VC ++, скажем

C: \ Hello \ World \ abc.txt

.
Но я хочу использовать эту функцию, чтобы выбрать папку

C: \ Hello \ World
вместо файла в нем.

Я думаю, мне нужно внести некоторые изменения в члены структуры «OPENFILENAME». Может кто-нибудь любезно дай мне знать, как мне добиться этого в программе VC ++. Заранее спасибо.

0

Решение

GetOpenFileName вообще не поддерживает выбор папки.

Ваши варианты:

  • SHBrowseForFolder который доступен в Windows 2000 и более поздних версиях, но выглядит немного некрасиво.
  • IFileDialog который является собственным выбором платформы для платформы, но доступен только в Vista или новее. Чтобы диалог вел себя как средство выбора папки, передайте FOS_PICKFOLDERS в SetOptions,

На мой взгляд, лучшим результатом для пользователя является использование IFileDialog где доступно, но отступить к SHBrowseForFolder для старых операционных систем.

4

Другие решения

Там в SHBrowseForFolder. Множество примеров C ++ вокруг, если вы ищете.

1

По вопросам рекламы [email protected]