Я пишу программу на C ++ для Windows, которая должна воспроизводить произвольно выбранную песню из массива, а пользователь должен иметь возможность проигрывать другую песню в списке одним нажатием кнопки.Как бы вы остановили звук из первой песни, чтобы воспроизвести вторую песню?
При нажатии моей кнопки, которая воспроизводит первую песню, воспроизводится звуковой ресурс, однако моя программа больше не реагирует на любые щелчки, иКод не продолжается, пока песня не будет завершена.Я попытался использовать CreateThread (), но безрезультатно, так как моя программа остается в не отвечающем состоянии.
Функция, содержащая PlaySound:
LPTHREAD_START_ROUTINE WINAPI PlayWavFile(int resource) {
PlaySound(MAKEINTRESOURCE(resource), hInst, SND_RESOURCE | SND_SYNC);
return 0;
}
Случай в функции WndProc, который определяетрезультат нажатия кнопок:
case WM_COMMAND:
if (LOWORD(wParam) == 1) {
HANDLE hThread = CreateThread(
NULL,
0,
PlayWavFile(i),
NULL,
NULL,
NULL
);
}
else if (LOWORD(wParam) == 2) {
HANDLE hPlaySecond = CreateThread(
NULL,
0,
PlayWavFile(j),
NULL,
NULL,
NULL
);
}
else if (LOWORD(wParam) == 3) {
HANDLE hStop = CreateThread(
NULL,
0,
PlayWavFile(NULL),
NULL,
NULL,
NULL
);
}
break;
Также, если я попытаюсь щелкнуть по моей кнопке, которая должна дать значение wParam, равное 3, программа достигнет исключения, в котором говорится:
Исключение, выданное в 0x00000000 вAudio Player.exe: 0xC0000005: нарушение прав доступа, местоположение выполнения 0x00000000.произошло.
Конечная цель заключается в том, чтобы программа просто реагировала, а музыка играла в фоновом режиме.