www.pudn.com > 縐嶺ok嗣馱夔畦溫ん40050_mv.rar > Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, DSPack, ExtCtrls, ImgList, Buttons, ComCtrls,
ToolWin, DirectShow9,Jpeg;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
PlayFunc: TMenuItem;
PlayMNU: TMenuItem;
PauseMNU: TMenuItem;
StopMNU: TMenuItem;
N9: TMenuItem;
BackwardMNU: TMenuItem;
FowardMNU: TMenuItem;
N12: TMenuItem;
FSMNU: TMenuItem;
PopupMenu1: TPopupMenu;
N5: TMenuItem;
N6: TMenuItem;
TopPanel: TPanel;
SG: TSampleGrabber;
Panel2: TPanel;
PlayFuncTB: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
DSTrackBar1: TDSTrackBar;
Panel3: TPanel;
VWEX: TDSVideoWindowEx2;
RadioGroup1: TRadioGroup;
GrabPanel: TPanel;
MADFilter: TFilter;
OpenDialog1: TOpenDialog;
ImageList1: TImageList;
FG: TFilterGraph;
procedure N4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure VWEXMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure PlayMNUClick(Sender: TObject);
procedure PauseMNUClick(Sender: TObject);
procedure StopMNUClick(Sender: TObject);
procedure BackwardMNUClick(Sender: TObject);
procedure FowardMNUClick(Sender: TObject);
procedure ToolButton9Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure FSMNUClick(Sender: TObject);
procedure DSTrackBar1Timer(sender: TObject; CurrentPos,
StopPos: Cardinal);
private
{ Private declarations }
public
{ Public declarations }
SeekControl : IMediaControl;
Grabbing: boolean;
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.N4Click(Sender: TObject);
begin
Close;
end;
procedure TMainForm.N2Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
IF FG.State=gsPlaying then
FG.Stop;
FG.Active:=true;
FG.ClearGraph;
FG.RenderFile(Opendialog1.FileName);
FG.QueryInterface(IMediaControl,SeekControl);
FG.Play;
PlayFunc.Enabled:=true;
PlayFuncTB.Enabled:=true;
RadioGroup1.Enabled:=true;
RADIOGROUP1.ItemIndex:=1;
GrabPanel.Visible:=true;
Grabbing:=false;
end;
end;
procedure TMainForm.N5Click(Sender: TObject);
begin
FSMNU.Click;
end;
procedure TMainForm.VWEXMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if FG.State=gsPlaying then
PopupMenu1.Popup(mouse.CursorPos.X+3,mouse.CursorPos.Y+3);
end;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
IF FG.State=gsPlaying then
FG.Stop;
FG.ClearGraph;
FG.Active:=false;
end;
procedure TMainForm.ToolButton1Click(Sender: TObject);
begin
PlayMNU.Click;
end;
procedure TMainForm.ToolButton2Click(Sender: TObject);
begin
PauseMNU.Click;
end;
procedure TMainForm.ToolButton3Click(Sender: TObject);
begin
StopMNU.Click;
end;
procedure TMainForm.ToolButton5Click(Sender: TObject);
begin
BackwardMNU.Click;
end;
procedure TMainForm.ToolButton6Click(Sender: TObject);
begin
FowardMNU.Click;
end;
procedure TMainForm.ToolButton8Click(Sender: TObject);
begin
FSMNU.Click;
end;
procedure TMainForm.PlayMNUClick(Sender: TObject);
begin
FG.Play;
end;
procedure TMainForm.PauseMNUClick(Sender: TObject);
begin
FG.Pause;
end;
procedure TMainForm.StopMNUClick(Sender: TObject);
begin
FG.Stop;
end;
procedure TMainForm.BackwardMNUClick(Sender: TObject);
var ncpt,ocpt,tcpt : LONGLONG;
g_pMediaSeeking:IMediaSeeking;
begin
if Succeeded(FG.QueryInterface(IID_IMediaSeeking, g_pMediaSeeking)) then begin
g_pMediaSeeking.GetCurrentPosition(ncpt);
g_pMediaSeeking.GetStopPosition(ocpt);
ncpt:=ncpt-(ocpt div 30);
if ncpt<0 then ncpt:=0;
g_pMediaSeeking.SetPositions(ncpt, AM_SEEKING_AbsolutePositioning, ncpt , AM_SEEKING_NoPositioning);
end;
end;
procedure TMainForm.FowardMNUClick(Sender: TObject);
var ncpt,ocpt,tcpt : LONGLONG;
g_pMediaSeeking:IMediaSeeking;
begin
if Succeeded(FG.QueryInterface(IID_IMediaSeeking, g_pMediaSeeking)) then begin
g_pMediaSeeking.GetCurrentPosition(ncpt);
g_pMediaSeeking.GetStopPosition(ocpt);
ncpt:=ncpt+(ocpt div 30);
g_pMediaSeeking.SetPositions(ncpt, AM_SEEKING_AbsolutePositioning, ocpt, AM_SEEKING_NoPositioning);
end;
end;
procedure TMainForm.ToolButton9Click(Sender: TObject);
begin
if VWEX.DesktopPlayback then
VWEX.NormalPlayback
else begin
VWEX.StartDesktopPlayback;
showmessage('您的桌面已經變成放映布了!!!請縮小其他視窗看看吧~')
end;
end;
procedure TMainForm.N6Click(Sender: TObject);
begin
showmessage('本程式是奇聲卡拉 O K 電腦伴唱專業研究開發,所有程式碼可自行修改,'+#13+
'但請大方公開修改後的作品,讓更多人能有福氣共享我們的作品'+#13#13#13+
'039917 2004/04/03');
end;
procedure TMainForm.RadioGroup1Click(Sender: TObject);
VAR GS2 : IMpegAudioDecoder;
SCNT : cardinal;
begin
if succeeded(MADFilter.QueryInterface(IMpegAudioDecoder,GS2)) then begin
scnt:=radiogroup1.ItemIndex;
gs2.put_dualmode(scnt);
end;
end;
procedure TMainForm.FSMNUClick(Sender: TObject);
begin
if (FG.state=gsPlaying) and VWEX.FullScreen then
VWEX.NormalPlayback
else
VWEX.StartFullScreen;
end;
procedure TMainForm.DSTrackBar1Timer(sender: TObject; CurrentPos,
StopPos: Cardinal);
var fn ,fnex,pathx: string;
BMP:TBitmap;
JPG:TJpegImage;
begin
// 這里是每隔0.5秒截一張圖,一秒鐘二張,頻率可以在DSTrackBar1.Timeinterval設定
// 1000 代表1000微秒,就是1秒,500就是0.5秒...........
end;
end.