Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7

Вадимиус
Дата: 03.11.2014 11:33:02
Привет, коллеги !

Незадача, чъёрт побъеры !


Есть код для выключения звука:

// где-то в h-Файле
#include <Mmsystem.h>
         HWAVEOUT hwo;
 	 WAVEFORMATEX tw;
 	 DWORD Volume;

// собственно сpp-реализация
// открыть звуковое устройство и получить дескриптор
		MMRESULT f0 = waveOutOpen(&hwo,WAVE_MAPPER,&tw,NULL,NULL,WAVE_FORMAT_DIRECT );
		if(f0 != MMSYSERR_NOERROR ) // WAVE_ALLOWSYNC, WAVE_FORMAT_DIRECT - работает 0-не полностью	
		{
			MessageBox("Ошибка открытия устройства звука");
			CString dd;
			dd.Format("%d",(int)f0);
			MessageBox(dd);
		}

// отключить звук
             waveOutGetVolume(hwo, &Volume);
             waveOutSetVolume(hwo, 0);

// включить обратно
             waveOutSetVolume(hwo, Volume);


Нстройка проекта Release: Linker --> Input --> Additional dependencies = WINMM.LIB (на VC++6 чуть в другом месте)

Так вот в чем прикол !

Компилю на своей любимой старенькой Visual Studio 6 на Win XP+SP3 - работает как часики !
Этот же код откомпилированный - переношу в виде EXE на Win 7 (Corporate edition)
Не работает. Звук НЕ отключает !

Ставлю на Win-7 VS2008. Компилирую. В своей же среде НЕ работает. При открытии код открытия 32 - ошибка.
Соответственно звук НЕ отключается, а иногда прога даже аварийно завершается. Ошибок при компиляции нет !

Помогите плизз ! В чём дело ? Почему не открывается звуковое устройство ?!!! Или может быть у кого-то есть наработки по такому простому вопросу, как ОТКЛЮЧЕНИЕ звука ?! Благодарность моя не будет знать границ !
mayton
Дата: 03.11.2014 12:08:55
Вадимиус, waveOutGetVolume возвращает 6 кодов ошибок. Проанализируй их.

http://msdn.microsoft.com/en-us/library/aa909806.aspx
Вадимиус
Дата: 03.11.2014 12:21:16
mayton
Вадимиус, waveOutGetVolume возвращает 6 кодов ошибок. Проанализируй их.

http://msdn.microsoft.com/en-us/library/aa909806.aspx


Всё хорошо, но выдает ошибку waveOutOpen(&hwo,WAVE_MAPPER,&tw,NULL,NULL,WAVE_FORMAT_DIRECT );
при открытии. причём только на Win-7 !

Может надо как-то дополнительно инициализировать структуру WAVEFORMATEX ?
Вадимиус
Дата: 03.11.2014 12:26:51
В моём случае waveOutOpen(&hwo,WAVE_MAPPER,&tw,NULL,NULL,WAVE_FORMAT_DIRECT );
возвращает код 32.

Где смотреть соответствие кодов и типов ошибок ?
Dimitry Sibiryakov
Дата: 03.11.2014 12:33:39

Вадимиус
код открытия 32 - ошибка.

WAVERR_BADFORMAT Attempted to open with an unsupported waveform-audio format.

Posted via ActualForum NNTP Server 1.5

mayton
Дата: 03.11.2014 12:34:31
По ссылке что я привел есть табличка. Справочник кодов ошибок.
Dimitry Sibiryakov
Дата: 03.11.2014 12:37:36

Вадимиус
Может надо как-то дополнительно инициализировать структуру WAVEFORMATEX ?

Ты её вообще не инициализируешь. Ожидаешь от мусора чего-то кроме непредсказуемого
поведения?..

Posted via ActualForum NNTP Server 1.5

Вадимиус
Дата: 03.11.2014 13:57:12
Dimitry Sibiryakov
Вадимиус
Может надо как-то дополнительно инициализировать структуру WAVEFORMATEX ?

Ты её вообще не инициализируешь. Ожидаешь от мусора чего-то кроме непредсказуемого
поведения?..


В смысле ? Так надо или нет инициализировать ? На Win Xp с компиляцией под VC++6 ничего не инициализировал и работало же ?
В чем принципиальная разница в работе в другой ОСи ????
Вадимиус
Дата: 03.11.2014 14:00:38
Dimitry Sibiryakov
Вадимиус
код открытия 32 - ошибка.

WAVERR_BADFORMAT Attempted to open with an unsupported waveform-audio format.


Не вкурил... "Попытка открыть с неподдерживаемым форматом аудио сигнала." ??? ЭТО ПРО ЧТО ?
mayton
Дата: 03.11.2014 14:03:42
Вадимиус
Dimitry Sibiryakov
пропущено...

Ты её вообще не инициализируешь. Ожидаешь от мусора чего-то кроме непредсказуемого
поведения?..


В смысле ? Так надо или нет инициализировать ? На Win Xp с компиляцией под VC++6 ничего не инициализировал и работало же ?
В чем принципиальная разница в работе в другой ОСи ????

Вместо очень длинного ответа на этот вопрос можно просто предложить тебе вернуться на WinXP.
Там - работало. Теперь - не работает.