Red de conocimiento informático - Problemas con los teléfonos móviles - vc++ multimedia cómo agregar control de volumen

vc++ multimedia cómo agregar control de volumen

Aquí tengo el código relevante para ajustar el volumen del sistema. Espero que te sea útil.

Mire aquí (un software de ajuste de volumen que hice antes, código fuente adjunto)

/qiujiejia/blog/item/407335c4b1a1acc239db49c7.html

Lo siguiente es Parte del código de referencia:

bool GetVolumeControl(HMIXER hmixer, long componenteType, long ctrlType, MIXERCONTROL* mxc)

{

MIXERLINECONTROLS mxlc;

MIXERLINE mxl;

mxl.cbStruct = sizeof(mxl);

mxl.dwComponentType = componenteType;

if(!mixerGetLineInfo((HMIXEROBJ )hmixer , &mxl, MIXER_GETLINEINFOF_COMPONENTTYPE))

{

mxlc.cbStruct = sizeof(mxlc);

mxlc.dwLineID = mxl.dwLineID;

mxlc.dwControlType = ctrlType;

mxlc.cControls = 1;

mxlc.cbmxctrl = sizeof(MIXERCONTROL);

mxlc.pamxctrl = mxc;

if(mixerGetLineControls((HMIXEROBJ)hmixer,&mxlc,MIXER_GETLINECONTROLSF_ONEBYTYPE))

devuelve 0;

else

devuelve 1 ;

}

devuelve 0;

}

GetVolumeValue sin firmar(HMIXER hmixer,MIXERCONTROL *mxc)

{

MIXERCONTROLDETAILS mxcd;

MIXERCONTROLDETAILS_UNSIGNED vol; vol.dwValue=0;

mxcd.hwndOwner = 0;

mxcd. cbStruct = tamaño de (mxcd);

mxcd.dwControlID = mxc->dwControlID;

mxcd.cbDetails = tamaño de (vol);

mxcd.paDetails = &vol;

mxcd.cChannels = 1;

if(mixerGetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_GETCONTROLDETAILSF_VALUE))

return -1;

return vol.dwValue;

}

bool SetVolumeValue(HMIXER hm

ixer ,MIXERCONTROL *mxc, volumen largo)

{

MIXERCONTROLDETAILS mxcd;

MIXERCONTROLDETAILS_UNSIGNED vol;vol.dwValue = volumen;

mxcd.hwndOwner = 0;

mxcd.dwControlID = mxc->dwControlID;

mxcd.cbStruct = sizeof(mxcd);

mxcd.cbDetails = sizeof (vol);

mxcd.paDetails = &vol;

mxcd.cChannels = 1;

if(mixerSetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER| MIXER_SETCONTROLDETAILSF_VALUE))

devuelve 0;

devuelve 1;

}

//Establece el valor del volumen

bool WINAPI SetVolume(LONG vol)

{

bool Result=false //Se utiliza para determinar si la función se ejecuta correctamente

MIXERCONTROL volCtrl;

HMIXER hmixer;

if(mixerOpen(&hmixer, 0, 0, 0, 0)) devuelve 0;

if(GetVolumeControl(hmixer,MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,MIXERCONTROL_CONTROLTYPE_VOLUME ,&volCtrl) )

{

int ChangeValue=volCtrl.Bounds.lMaximum/INTERVAL;

int TotalValue=ChangeValue*vol;

if( SetVolumeValue(hmixer,&volCtrl,TotalValue))

Result=true;

}

mezcladorClose(hmixer);

devolver resultado;

}

//Devolver valor de volumen

WINAPI GetVolume() sin firmar

{

unsigned rt= 0;

MIXERCONTROL volCtrl;

HMIXER hmixer

if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;

if(!GetVolumeControl(hmixer,MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,MIXERCONTROL_CONTROLTYPE_VOLUME,&volCtrl))

return 0;

int ChangeValue=volCtrl.Bounds.lMaximum/INTERVAL;

//El valor del volumen cambia cada vez que se llama a la función

rt=GetVolumeValue(hmixer,&volCtrl)/ChangeValue //GetVolumeValue obtiene el valor específico

MixerClose(hmixer);

retorno rt;

}