Я новый участник и присоединился к этому сайту после обращения к нему много раз, когда я застрял в некоторых проблемах с программированием. Я пытаюсь закодировать медиа-плеер (Win32 SDK VC++ 6.0) для моего проекта в колледже, и я застрял. Я искал на разных форумах и msdn и, наконец, приземлился на функцию GetShortPathName, которая позволяет мне играть через папки и файлы, у которых есть пробелы в их именах. Я буду вставлять код здесь, поэтому будет намного понятнее, что я пытаюсь сделать.воспроизведение файлов после их приема через открытое диалоговое окно
case IDM_FILE_OPEN :
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = "Media Files (All Supported Types)\0*.avi;*.mpg;*.mpeg;*.asf;*.wmv;*.mp2;*.mp3\0"
"Movie File (*.avi;*.mpg;*.mpeg)\0*.avi;*.mpg;*.mpeg\0"
"Windows Media File (*.asf;*.wmv)\0*.asf;*.wmv\0"
"Audio File (*.mp2;*.mp3)\0*.mp2;*.mp3\0"
"All Files(*.*)\0*.*\0";
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT | OFN_CREATEPROMPT;
ofn.lpstrDefExt = "mp3";
if(GetOpenFileName(&ofn))
{
length = GetShortPathName(szFileName, NULL, 0);
buffer = (TCHAR *) malloc (sizeof(length));
length = GetShortPathName(szFileName, buffer, length);
for(i = 0 ; i < MAX_PATH ; i++)
{
if(buffer[i] == '\\')
buffer[i] = '/';
}
SendMessage(hList,LB_ADDSTRING,0,(LPARAM)buffer);
mciSendString("open buffer alias myFile", NULL, 0, NULL);
mciSendString("play buffer", NULL, 0, NULL);
}
return 0;
с помощью функции GetShortPathName я получаю путь, как: D: /Mp3z/DEEPBL~1/03SLEE~1.mp3 Собираем этот путь непосредственно в Play кнопки случае
mciSendString("open D:/Mp3jh/DEEPBL~1/03SLEE~1.mp3 alias myFile", NULL, 0, NULL);
mciSendString("play myFile", NULL, 0, NULL);
открывает файл и играет отлично. Но как только я пытаюсь открыть и воспроизвести его через диалоговое окно с открытым файлом, ничего не происходит. Любой вход оценивается.
Почему, по-вашему, вам нужно короткое название пути? –
Не используйте краткое имя. Просто избегайте пробелов в имени, добавляя кавычки к имени файла: '' open \ "path/to/file/с пробелами в.mp3 \" alias myFile "' –