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