请问怎样控制音量及左右声道???(50分)

  • 主题发起人 主题发起人 乐子
  • 开始时间 开始时间

乐子

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎样控制音量及左右声道??

有位仁兄贴了这样的回贴
转贴的:

但运行后却报错
Undeclared identifier: 'waveOutSetVolume'

应该怎样才对呢??请教大家了

//音量控制
procedure TForm1.TrackBar1Change(Sender: TObject);

var
t,v:Longint;

begin

// if a=0 then
Exit;

t:=TrackBar1.Position;

v:=(t shl 8)or(t shl 24);

waveOutSetVolume(0,v);

end;



//左声道控制
procedure TForm1.TrackBar2Change(Sender: TObject);

var
t,v:Longint;

begin

t:=TrackBar2.Position;

waveOutGetVolume(0,@v);

v:=v and $ffff0000 or (t shl 8);

waveOutSetVolume(0,v);

end;



//右声道控制
procedure TForm1.TrackBar3Change(Sender: TObject);

var
t,v:Longint;

begin

t:=TrackBar3.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);

TrackBar2.Position:=hi(v);

TrackBar3.Position:=hi(v shr 16);

if hi(v)>hi(v shr 16) then

TrackBar1.Position:=hi(v)
else

TrackBar1.Position:=hi(v shr 16);

end;


 
不会吧??

真的没有人愿答????

各位帮顶一下吧
 
是编译没有通过吧,应该需要uses mmsystem
 
贴子本身没错!支持楼上!
 
以前没有搞过这方面,仔细看看
 
//分别控制两个声道的方法 (转贴)
  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函数。
 
chenxz兄与3cs兄

好像调滑动块没反应啊~~~~~

是不是有东西没设好呢???

还有就是这类编码的含义有没有规律呢??看得我糊涂了~~~~~

//结果Genl兄还没等我再问就先回了~~~~
 
用AMixer控件
如果找不到就用MMTools吧。。。
 
//来自:Genl, 时间:2003-7-21 23:15:00, ID:2048260
//用AMixer控件
//如果找不到就用MMTools吧。。。

请问哪儿找呢???
 
我还是想知道这个问题怎么解决
 
这方法我试过了,好像只在WIN98中能收到效果,在2000中却没有反应

各位认为呢??
 
一定有效的,我用了无数次了.
 
请问我用来播放XVID压缩DVD得到的AVI格式的文件也是这样控制左右声道的吗?还有根据我以前用VB遇到的经验,在设置了左右声道以后,2.0的音箱就只有一个发声了,请问怎么解决这类问题呢?
 
//来自:笑面虎, 时间:2003-7-23 15:00:00, ID:2052854
//一定有效的,我用了无数次了.

let me try again
 
就没有人回答我的问题吗?呜呜
 
鎴戜篃鏈夊悓鏍风殑闂??鍟婏紝win98鍙?互鍙戝0鍦╳in2000涓?嵈涓嶈兘鍟婃
 
我试过了但在win2000下好像出了点问题,这程序根本不能控制
这是为什么啊
 
请问楼主这个TrackBar1change控件在哪,我怎么找不到
 
TrackBar1change这是事件,控件是TrackBar1这才是控件啊
 
后退
顶部