Я пишу консольную программу, которая использует DirectSound API для визуализации некоторых аудиоданных.Я наткнулся на любопытную проблему, когда следовал Руководство по программированию DirectSound (от Microsoft) .Согласно документации :
После создания объекта устройства необходимо установить уровень сотрудничества для устройства с помощью метода IDirectSound8 :: SetCooperativeLevel .Если вы не сделаете этого, звуки не будут слышны.
Проблема в том, что я пишу консольную программу, а SetCooperativeLevel
требует HWND в качестве первого аргумента.У меня нет HWND, чтобы иметь дело с консольной программой.Я попытался указать нулевой указатель, но с ошибкой DSERR_INVALIDPARAM
произошел сбой.
Какое значение HWND должно быть указано для IDirectSound8::SetCooperativeLevel
в консольной программе?Аудио часть программы планируется построить как общую библиотеку, поэтому она практически ничего не знает о «внешней» программе.
Спасибо за любой совет!
Примечание: я знаю, что есть несколько лучшее решение для простого рендеринга аудио, например использование SDL, OpenAL, SFML (на основе OpenAL), но для моего текущего проекта применяется DirectSound.
Редактировать : Я нашел сообщение от инженера Microsoft, которое устраняет сомнения относительно использования окна рабочего стола или окна консоли в качестве HWND для SetCooperativeLevel
при создании буферов GLOBAL_FOCUS.