請問如何改變和取得主音量的大小,而不是改變和取得Wave音量的大小 |
尚未結案
|
saam
初階會員 發表:61 回覆:75 積分:27 註冊:2003-03-03 發送簡訊給我 |
請教各位先進: 我參照幾位前輩的文章寫了一個可改變和取得Wave音量的大小 的程式如下,但是如果我想要改變和取得主音量的大小要如何改呢? //設定音量
procedure SetVolume(const volL, volR: Word);
var
V:Longint;
begin
v:=(volL shl 8)or(volR shl 24);
waveOutSetVolume(0,v);
end; procedure TForm1.FormCreate(Sender: TObject);
begin
TrackBar1.Max := 255; //設定最大音量值
TrackBar1.Position := GetSetVolume;
end; //取得音量
function GetSetVolume:Integer;
var
v:longint;
begin
WaveOutGetVolume(0,@v); if hi(v) > hi(v shr 16) then
Result := hi(v)
else
Result := hi(v shr 16); end; procedure TForm1.TrackBar1Change(Sender: TObject);
begin
SetVolume(TrackBar1.position, TrackBar1.position); end;
|
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
我不知道你将的是什么意识,但我认为你可能需要同时控制左右声道,下面的文章供参考: 分别控制两个声道的方法
1.控制左声道
procedure Tform1.TrackBar1change(Sender:Tobject);
var t,v:longint;
begin
t:=trackbar1.Position;
waveoutgetvolume(0,@v);//@表示指向变量v的指针(32位),调用此函数的用意就是得到右声道的值,做到在调节左声道的时候,不改变右声道
v:=v and $ffff0000 or (t shl 8);//数字前面加$表示是十六进制数字
waveoutsetvolume(0,v);
end;
2.控制右声道
procedure Tform1.TrackBar2change(Sender:Tobject);
var t,v:longint;//它的原理同上
begin
t:=trackbar2.Position;
waveoutgetvolume(0,@v);
v:=v and $0000ffff or (t shl 24);
waveoutsetvolume(0,v);
end;
//调用
procedure TForm1.FormCreate(Sender: TObject);
var v:longint;
begin
waveoutgetvolume(0,@v);//得到现在音量
trackbar1.Position:=hi(v);//设置左滑块的正确位置
trackbar2.Position:=hi(v shr 16);//设置右声道滑块的正确位置
end;
注:函数hi(v)的作用为:返回一个16位无符号整数的高8位值。如果v为32位,则高16位自动被忽略了。
2.只使用高8位时,可使调节效果更明显。
3.对波形文件可以用waveoutgetvolume函数,对cd文件可以用auxgetvolume函数。 风花雪月 e梦情缘
------
风花雪月 e梦情缘 |
saam
初階會員 發表:61 回覆:75 積分:27 註冊:2003-03-03 發送簡訊給我 |
感謝wnhoo前輩的指導: 在下使用這個方法來取得音量,得到的是Wave的音量,但是粉奇怪的是我在公司
都可以到音量值,但在家裏卻抓不到,我二邊都是用Windows 2000 Server,但是
家裏的音效卡驅動是AC97 Audio,為什麼呢?
waveoutgetvolume(0,@v);//得到现在音量
trackbar1.Position:=hi(v);//设置左滑块的正确位置
trackbar2.Position:=hi(v shr 16);//设置右声道滑块的正确位置 又如果我想改變 音量控制 的音量(Wave音量左邊)要如何寫呢?
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |