я использую GetOpenFileName
чтобы открыть файлы в C ++, возможно ли установить начальный каталог в виртуальном расположении «Компьютер» с помощью lpstrInitialDir
?
Спасибо,
Lee.
Это невозможно с GetOpenFileName
потому что местоположение, которое вы хотите использовать, не является частью файловой системы. Скорее, это часть более широкого пространства имен оболочки.
Если вы посмотрите на документацию для GetOpenFileName
вы увидите, что он был заменен (на самом деле более 10 лет назад) диалогами общих предметов. Эти диалоги позволяют вам указывать начальную папку как элемент оболочки.
Если вам нужно поддерживать устаревшую Windows старше Vista, где IFileDialog
недоступен, попробуйте указать GUID папки Shell. Например, My Computer
GUID есть 20D04FE0-3AEA-1069-A2D8-08002B30309D
, Вы можете указать это так:
ofn.lpstrInitialDir = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}";
Однако стоит отметить, что этот метод почти обречен на сбой в Windows 7 и более поздних поведенческие изменения
Итак, вам лучше использовать IFileDialog
на Vista и позже вместо этого.