Название: SIGSEVG(отладчик) Segmentation fault... Отправлено: Aeromiss от Декабрь 15, 2010, 03:42 LPHMIXEROBJ ghmx;
MMRESULT mmr; int Receiver::GetMasterVolumeControlID() { // get dwLineID MIXERLINE mxl; mxl.cbStruct = sizeof(MIXERLINE); mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; if (::mixerGetLineInfo(*ghmx, &mxl, // здесь происходит SIGSEVG MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE) != MMSYSERR_NOERROR) return 34; // get dwControlID MIXERCONTROL mxc; MIXERLINECONTROLS mxlc; mxlc.cbStruct = sizeof(MIXERLINECONTROLS); mxlc.dwLineID = mxl.dwLineID; mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME; mxlc.cControls = 1; mxlc.cbmxctrl = sizeof(MIXERCONTROL); mxlc.pamxctrl = &mxc; if (mixerGetLineControls(*ghmx, &mxlc, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE) != MMSYSERR_NOERROR) return 34; return mxc.dwControlID; } bool Receiver::SetVolume(DWORD dwVolume) { MIXERCONTROLDETAILS mxcd; MIXERCONTROLDETAILS_UNSIGNED mxcd_u; mxcd.cbStruct = sizeof(mxcd); mxcd.dwControlID = GetMasterVolumeControlID(); mxcd.cChannels = 1; mxcd.cMultipleItems = 0; mxcd.cbDetails = 4; mxcd.paDetails = &mxcd_u; mmr = mixerGetControlDetails(*ghmx, &mxcd, 0L); if (MMSYSERR_NOERROR != mmr) return FALSE; mxcd_u.dwValue = dwVolume; mmr = mixerSetControlDetails(*ghmx, &mxcd, 0L); if (MMSYSERR_NOERROR != mmr) return FALSE; return TRUE; } void Receiver::Volume() //первоначальный вызов этой функции { SetVolume((DWORD)0x0000); } Скажите плс что да как бороться? Название: Re: SIGSEVG(отладчик) Segmentation fault... Отправлено: Fat-Zer от Декабрь 15, 2010, 03:59 пакажите заголовок mixerGetLineInfo.
И всё, что капсом набрано(кроме того, что очевидно какие-то флаги), это классы или дефайны? Если дефайны, то тоже покажите. Название: Re: SIGSEVG(отладчик) Segmentation fault... Отправлено: Aeromiss от Декабрь 15, 2010, 04:05 а тут кароче winapi идет и используются
#include "windows.h" #include <mmsystem.h> ну если интересно то глянь в mmsystem...=) они там все капсом набраны. Ну.. вообщем как в либе дано так и юзаеца=)) Название: Re: SIGSEVG(отладчик) Segmentation fault... Отправлено: Fat-Zer от Декабрь 15, 2010, 04:11 нету винды под рукой...
в любом случае подозрение, что ghmx - указатель и он не инициализируется Название: Re: SIGSEVG(отладчик) Segmentation fault... Отправлено: Aeromiss от Декабрь 15, 2010, 04:18 да, ты прав, я его спецом поставил .... без указателя пишет ошибку ему требуется HMIXEROBJ_* а не HMIXEROBJ_** .... ну а с ним хоть приложение запускалось но работало с ошибкой.... кароче ппц системный регулятор громкости фиг сделаеш=(( winapi ужасно странная вещь...
а ну и LPHMIXEROBJ ghmx; должно быть HMIXEROBJ ghmx; но qt не видит такого типа ... по typedef'у что в mmsystem.h брал LPHMIXEROBJ ghmx; что тоже весьма странно... вопрос остается тем же... что делать?=) Название: Re: SIGSEVG(отладчик) Segmentation fault... Отправлено: Fat-Zer от Декабрь 15, 2010, 04:30 Да... winapi без обёрток - страшная вещь, да и выглядит буд-то этот код вызывает сотону...
Название: Re: SIGSEVG(отладчик) Segmentation fault... Отправлено: deaks от Декабрь 15, 2010, 10:52 какой-то хаос
Название: Re: SIGSEVG(отладчик) Segmentation fault... Отправлено: Aeromiss от Декабрь 15, 2010, 12:17 есть конечно вариант, но он оч тяжелый .....http://www.codeproject.com/KB/vista/CoreAudio.aspx.... тут исходник dll и проги ... но там реально сотону вызывает.... хоть там хоть и VS но не разберешся...
Название: Re: SIGSEVG(отладчик) Segmentation fault... Отправлено: SASA от Декабрь 15, 2010, 12:25 какой-то хаос Старый, добрый WinAPI :) Зато, когда люди видят твой код, думают, что ты крут. И вообще с другой планеты :)Название: Re: SIGSEVG(отладчик) Segmentation fault... Отправлено: Aeromiss от Декабрь 15, 2010, 13:34 Спасибо=) Подбодрил...=) HMIXEROBJ - понимает delphi, а qt чето не очень=(
Ну все сделал тока указатели не надо ставить и тип Qt начал понимать..... Но все равно создается канал приложения и только у него громкость убирает.... а нужно всех каналов.... Че делать?=) |