Как предоставить HWND для DirectSound SetCooperativeLevel в консольной программе?

Я пишу консольную программу, которая использует DirectSound API для рендеринга некоторых аудиоданных. Я столкнулся с любопытной проблемой, следуя Руководству по программированию DirectSound (от Microsoft) . Согласно документации :

После создания объекта устройства необходимо установить уровень взаимодействия для устройства с помощью метода IDirectSound8 :: SetCooperativeLevel . Если вы этого не сделаете, звуки не будут слышны.

Проблема в том, что я пишу консольную программу, а SetCooperativeLevel требует HWND в качестве первого аргумента. У меня нет HWND для работы в консольной программе. Я попытался предоставить нулевой указатель, но это не удалось с кодом ошибки DSERR_INVALIDPARAM .

Какое значение HWND должно быть указано для IDirectSound8 :: SetCooperativeLevel в консольной программе? Аудиочасть программы планируется создать как общую библиотеку, поэтому она практически ничего не знает о "внешней" программе.

Спасибо за любой совет!

Примечание: я знаю, что есть несколько лучшее решение для простого рендеринга звука, например, с использованием SDL, OpenAL, SFML (на основе OpenAL), но для моего текущего проекта применяется DirectSound.


Изменить : я нашел сообщение от Microsoft инженер, который устраняет сомнения относительно использования окна рабочего стола или окна консоли в качестве HWND для SetCooperativeLevel при создании буферов GLOBAL_FOCUS.

5
задан overcoder 16 July 2011 в 15:18
поделиться