Перевести букву диска на полный путь для записи компакт-дисков - PullRequest
0 голосов
/ 21 сентября 2010

В следующем коде я пытаюсь получить местоположение папки от пользователя. Однако, когда я выбрал E: \ в браузере папок, szAbsolutePath не дает мне путь для временной папки устройства записи компакт-дисков. Это мешает мне сохранить в это место. Однако, если я выберу что-то вроде E: \ folder1 \, я получу полный путь и могу записать файлы в это место.

char szDisplayName[MAX_PATH];
BROWSEINFO binfo;
memset(&binfo, 0, sizeof(BROWSEINFO));
binfo.lpszTitle = strTitle.c_str();
binfo.hwndOwner = hwndOwner;
binfo.pszDisplayName = szDisplayName;
binfo.ulFlags = BIF_USENEWUI | BIF_NEWDIALOGSTYLE | BIF_BROWSEFILEJUNCTIONS | BIF_RETURNONLYFSDIRS;
PIDLIST_ABSOLUTE pidl = SHBrowseForFolder(&binfo);
if(pidl) {
  char szAbsolutePath[MAX_PATH];
  SHGetPathFromIDList(pidl, szAbsolutePath);
}

Как я всегда могу получить полный путь, когда пользователь выбирает корень диска CD-R?

1 Ответ

0 голосов
/ 25 ноября 2010

Вы можете использовать функцию ICDBurn::GetRecorderDriveLetter, чтобы получить букву диска рекордера - тогда тривиально сравнить со строкой, которую вы получаете от GetSaveFileName(). Если вы вернетесь к пути записи компакт-дисков, вы можете использовать SHGetFolderLocation с CSIDL_CDBURN_AREA, чтобы получить путь к области подготовки - тогда просто нужно заменить букву диска в начале строки пути путь к месту подготовки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...