?? unit4.pas
字號(hào):
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
AMixer, ComCtrls, MMSystem;
type
TForm1 = class(TForm)
ListView1: TListView;
TrackBar1: TTrackBar;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure TrackBar1Change(Sender: TObject);
private
{ Private declarations }
Mixer:TAudioMixer;
procedure DoMixerChange (Sender:TObject;MixerH:HMixer;ID:Integer);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var A,B,C:Integer;
Cnt:PMixerControl;
LI:TListItem;
procedure ProcessControl;
begin
If B=-1 then
Cnt:=Mixer.Destinations[A].Controls[C]
else
Cnt:=Mixer.Destinations[A].Connections[B].Controls[C];
If ((Cnt.dwControlType=MIXERCONTROL_CONTROLTYPE_BASS) OR
(Cnt.dwControlType=MIXERCONTROL_CONTROLTYPE_TREBLE)) then
begin
LI:=ListView1.Items.Add;
LI.Caption:=Cnt.szName;
LI.SubItems.Add (IntToStr(A));
LI.SubItems.Add (IntToStr(B));
LI.SubItems.Add (IntToStr(C));
end;
end;
begin
Mixer:=TAudioMixer.Create (Self);
If Mixer.MixerCount=0 then
Exit;
Mixer.OnControlChange:=DoMixerChange;
For A:=0 to Mixer.Destinations.Count-1 do
begin
B:=-1;
For C:=0 to Mixer.Destinations[A].Controls.Count-1 do
ProcessControl;
For B:=0 to Mixer.Destinations[A].Connections.Count-1 do
For C:=0 to Mixer.Destinations[A].Connections[B].Controls.Count-1 do
ProcessControl;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Mixer.Free;
Mixer:=nil;
end;
procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
var MCD:TMixerControlDetails;
Cntrl:PMixerControl;
A,B,C:Integer;
begin
If Mixer=nil then
Exit;
If ListView1.Selected=nil then
TrackBar1.Enabled:=False
else
begin
A:=StrToInt (ListView1.Selected.SubItems[0]);
B:=StrToInt (ListView1.Selected.SubItems[1]);
C:=StrToInt (ListView1.Selected.SubItems[2]);
If B=-1 then
Cntrl:=Mixer.Destinations[A].Controls[C]
else
Cntrl:=Mixer.Destinations[A].Connections[B].Controls[C];
TrackBar1.Enabled:=True;
MCD.cbStruct:=SizeOf(TMixerControlDetails);
MCD.dwControlID:=Cntrl.dwControlID;
MCD.cChannels:=1;
MCD.cMultipleItems:=0;
MCD.cbDetails:=SizeOf(Integer);
MCD.paDetails:=@C;
mixerGetControlDetails (Mixer.MixerHandle,@MCD,MIXER_GETCONTROLDETAILSF_VALUE);
TrackBar1.Position:=C;
end;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
var MCD:TMixerControlDetails;
Cntrl:PMixerControl;
A,B,C:Integer;
begin
If Mixer=nil then
Exit;
If ListView1.Selected=nil then
TrackBar1.Enabled:=False
else
begin
A:=StrToInt (ListView1.Selected.SubItems[0]);
B:=StrToInt (ListView1.Selected.SubItems[1]);
C:=StrToInt (ListView1.Selected.SubItems[2]);
If B=-1 then
Cntrl:=Mixer.Destinations[A].Controls[C]
else
Cntrl:=Mixer.Destinations[A].Connections[B].Controls[C];
TrackBar1.Enabled:=True;
MCD.cbStruct:=SizeOf(TMixerControlDetails);
MCD.dwControlID:=Cntrl.dwControlID;
MCD.cChannels:=1;
MCD.cMultipleItems:=0;
MCD.cbDetails:=SizeOf(Integer);
C:=TrackBar1.Position;
MCD.paDetails:=@C;
mixerSetControlDetails (Mixer.MixerHandle,@MCD,MIXER_GETCONTROLDETAILSF_VALUE);
end;
end;
procedure TForm1.DoMixerChange (Sender:TObject;MixerH:HMixer;ID:Integer);
begin
ListView1Change (Self, nil,ctText);
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -