CD 볼륨제어 TrackBar에서 이벤트가 발생하면 실행하는 함수를
옮겨놓았습니다.
근데 CD 볼륨제어를 하면 MAIN 볼륨과 MIC 볼륨까지 같이
제어가 되는데 왜그런지 답답합니다.
제발 도와주소서..
// CD-ROM의 볼륨설정을 변경하는 이벤트가 발생하면
procedure TMixerForm.TrackBar3Change(Sender: TObject);
begin
SetAUXMaxVolume(TrackBar3.Max - TrackBar3.Position);
end;
// 보조 오디오의 볼륨을 결정하는 프로시져
procedure SetAUXMaxVolume(level:integer);
begin
// 보조오디오의 수를 얻는다.
nNbrAuxDevices := auxGetNumDevs;
for nDevId := 0 to nNbrAuxDevices-1 do
begin
rc := auxGetDevCaps(nDevId, @mauxcaps, sizeof(mauxcaps));
if (rc = MMSYSERR_NOERROR and (wTechnology and AUXCAPS_CDAUDIO) and
(dwSupport and AUXCAPS_VOLUME)) then
begin
if auxGetVolume(nDevId, @dwVol) <> MMSYSERR_NOERROR then Break;
wLeft := LOWORD(dwVol);
wRight := LOWORD(dwVol);
if level < 0 then level := 0;
if level > 15 then level := 15;
wLeft := $1111 * level;
wRight := $1111 * level;
// 보조오디오의 좌우 볼륨을 설정한다.
rc := AuxSetVolume(nDevid, MAKELONG(wLeft, wRight));
end;
end;
end;
// 보조오디오의 현재볼륨설정을 가져오는 함수
Function GetAUXMaxVolume:integer;
begin
// 보조오디오의 수를 얻는다.
nNbrAuxDevices := auxGetNumDevs;
for nDevId := 0 to nNbrAuxDevices-1 do
begin
// 보조오디오의 능력을 결정한다.
rc := auxGetDevCaps(nDevId, @mauxcaps, sizeof(mauxcaps));
if (rc = MMSYSERR_NOERROR and (wTechnology and AUXCAPS_CDAUDIO) and
(dwSupport and AUXCAPS_VOLUME)) then
begin
if auxGetVolume(nDevId, @dwVol) <> MMSYSERR_NOERROR then Break;
wLeft := LOWORD(dwVol);
// 보조오디오의 보륨값을 얻는다.
Result:= (wLeft div $1111);
end;
end;
end;