多媒体(200分)

  • 主题发起人 许德丰
  • 开始时间

许德丰

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
1.在Delphi如何实现系统声音控制?!
2.如何实现模拟液晶屏显示?
 
没营养. 查找已答问题吧!
 
waveoutsetvolume
 
CJ&cAkk因为我难连接,尚未得到答案,请发E-mail给我可以吗?!!
1.在Delphi如何实现系统声音控制?!
2.如何实现模拟液晶屏显示?
 
cj:你提过这问题啊.
 
控制系统声音的控件容易找到
如果不行,说一声,我找发给你
至于液晶屏显示,是什么东东?
是不是那种电子广告板一样的东西?
 
如果是要电子广告版我 给你
 
对于声音的控制,我知道cj曾经给我们很多的提示,你可以去多媒体以前的那些文章
里去淘金啊!!!!在delphi中的帮助里面你也可以找到的啊!!自己去看看么。
另外,对于模拟液晶显示,是不是类似于LED的形式呢?如果你需要,我可以给你的。
<a href="mailto: hotty@shtdu.edu.cn">hotty</a>
 
关于声音PlaySound(FileName,NULL,SND_FILENAME);
至于模拟液晶显示,可以找一些计数器的图标。0-9都有即可。
是什么数字就用这些图标组合一下即可,编程很容易实现。
 
1.用mmsystem的
MMRESULT waveOutSetVolume(
HWAVEOUT hwo,
DWORD dwVolume
);
2.好象有个peak啥的mmapi可以用, 忘了, 明天晚上可以找到.
 
另外,你有没有考虑过分别控制左右声到呢?请各位帮帮忙了。反正是要经过什么
与或,左移,右移。我也不明白了。
 
找到了:) 这里是主要代码:)
type Tvolume=record
left,right:word;
end;

procedure fillstruct(control:pMixerControl;var Cdetails:tMIXERCONTROLDETAILS);
function getpeak(control:pMixerControl;var peak:integer):boolean;
function setvolume(control:pmixercontrol;
volume:Tvolume):boolean;
function getvolume(control:pmixercontrol;
volume:Tvolume):boolean;

var
Form1: TForm1;
mcontrols:array of array of array of PMixerControl;
//mixer的数组
fmixerhandle:HMIXER;
//mixer的句柄

implementation

{$R *.DFM}

procedure fillstruct(control:pMixerControl;var Cdetails:tMIXERCONTROLDETAILS);
begin

Cdetails.cbStruct:=sizeof(cdetails);
cdetails.dwControlID:=Control.dwControlID;
cdetails.cbDetails:=sizeof(integer);
cdetails.hwndOwner:=0;
end;

function getpeak(control:pMixerControl;var peak:integer):boolean;
var
details:TMixerControlDetailsSigned;
cdetails:tMIXERCONTROLDETAILS;
begin

Result:=false;
if control.dwControlType<> mixercontrol_controltype_peakmeter then
exit;
cdetails.cChannels:=1;
cdetails.paDetails:=@details;
fillstruct(control,cdetails);
result:=mixerGetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0;
end;

function setvolume(control:pmixercontrol;
volume:Tvolume):boolean;
var
details:array[0..30] of integer;
cdetails:tMIXERCONTROLDETAILS;
begin

fillstruct(control,cdetails);
cdetails.cChannels:=2;
cdetails.paDetails:=@details;
details[0]:=volume.left;
details[1]:=volume.right;
result:=mixerSetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0;
volume.left:=details[0];
volume.right:=details[1];
end;

function getvolume(control:pmixercontrol;
volume:Tvolume):boolean;
var
details:array[0..30] of integer;
cdetails:tMIXERCONTROLDETAILS;
begin

fillstruct(control,cdetails);
cdetails.cChannels:=2;
cdetails.paDetails:=@details;
result:=mixerGetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0;
volume.left:=details[0];
volume.right:=details[1];
end;


 
我也来一段:
这是我自己做的一个控制音量控件的一段代码:
procedure SetVolume(left,right:integer);
var leftv,rightv:integer;
begin

leftv:=left;
rightv:=right;
mmsystem.waveOutSetVolume(0,leftv+rightv*65536);
end;



procedure GetLeftVolume;
var allvolume,leftv,rightv:integer;
begin

waveoutgetvolume(0,@allvolume);
leftv:=allvolume and $0ffff;
rightv:=(allvolume and $0ffff0000) div $10000;
FTempLeft:=leftv;
FTempRight:=rightv;
end;


procedure GetRightVolume;
var allvolume,leftv,rightv:integer;
begin

waveoutgetvolume(0,@allvolume);
leftv:=allvolume and $0ffff;
rightv:=(allvolume and $0ffff0000) div $10000;
FTempLeft:=leftv;
FTempRight:=rightv;
end;


 
大富翁一代的问题,都三带了还这样多
 
关于液晶显示,<<家佳电脑文摘>>(NO.3)上有一个不错的构件,可以试一试.
或者我可以直接给你,不过我是在学校上的教育网,速度太慢!
 
时间太久,强制结束。 wjiachun
 

Similar threads

顶部