www.pudn.com > DirectShowPlayer.rar > AMPU2.PAS
// Avalon Media Player
// Copyright © 2001 Pulsar Studio / Lord Trancos.
unit AMPU2;
// --------------------------------------------------------------------
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, Common, AMPU1, DX8DS, Menus;
type
TForm2 = class(TForm)
VideoInfo: TStatusBar;
VideoDisplay: TPanel;
PopupMenu1: TPopupMenu;
Menu1: TMenuItem;
N1: TMenuItem;
Menu2: TMenuItem;
SubMenu1: TMenuItem;
SubMenu2: TMenuItem;
SubMenu3: TMenuItem;
SubMenu4: TMenuItem;
SubMenu5: TMenuItem;
SubMenu6: TMenuItem;
SubMenu7: TMenuItem;
N2: TMenuItem;
SubMenu8: TMenuItem;
Menu3: TMenuItem;
N3: TMenuItem;
Menu4: TMenuItem;
Menu5: TMenuItem;
Menu6: TMenuItem;
N4: TMenuItem;
Menu7: TMenuItem;
N5: TMenuItem;
Menu8: TMenuItem;
N6: TMenuItem;
Menu9: TMenuItem;
N7: TMenuItem;
Menu10: TMenuItem;
Menu11: TMenuItem;
Menu12: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Menu1Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure SubMenuWindowSize(Sender: TObject);
procedure SubMenu8Click(Sender: TObject);
procedure Menu3Click(Sender: TObject);
procedure VideoDisplayMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure VideoDisplayMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Menu4Click(Sender: TObject);
procedure Menu5Click(Sender: TObject);
procedure Menu6Click(Sender: TObject);
procedure Menu7Click(Sender: TObject);
procedure Menu8Click(Sender: TObject);
procedure Menu9Click(Sender: TObject);
procedure Menu10Click(Sender: TObject);
procedure Menu11Click(Sender: TObject);
procedure Menu12Click(Sender: TObject);
procedure RunFN(_fn: string);
procedure PlaceWindow;
private
{ Private declarations }
procedure WMOnMove(var Msg: TMessage); message WM_MOVE;
public
{ Public declarations }
end;
var
Form2 : TForm2;
OrgP : TPoint;
OrgXY : TPoint;
// --------------------------------------------------------------------
implementation
uses AMPU3;
{$R *.DFM}
// --------------------------------------------------------------------
procedure TForm2.PlaceWindow;
begin
Left := Form1.Left;
Top := Form1.Top + Form1.Height;
end;
// --------------------------------------------------------------------
procedure TForm2.WMOnMove(var Msg: TMessage);
begin
if (Form1.Visible) then PlaceWindow;
end;
// --------------------------------------------------------------------
procedure TForm2.FormResize(Sender: TObject);
begin
if (Form1.Visible) then PlaceWindow;
if dsmpVideoAvail(Player) then
with VideoDisplay
do Player.VideoWindow.SetWindowPosition(0, 0, Width, Height);
end;
// --------------------------------------------------------------------
procedure TForm2.FormKeyPress(Sender: TObject; var Key: Char);
begin
if ((Key = #27) or (Key = #13)) and (dsmpVideoAvail(Player))
then Player.VideoWindow.put_FullScreenMode(false);
end;
// --------------------------------------------------------------------
procedure TForm2.Menu1Click(Sender: TObject);
// FullScreen/Window Mode.
var _fs : LongBool;
begin
if dsmpVideoAvail(Player) then
begin
Player.VideoWindow.get_FullScreenMode(_fs);
Player.VideoWindow.put_FullScreenMode(not _fs);
end;
end;
// --------------------------------------------------------------------
procedure TForm2.SubMenuWindowSize(Sender: TObject);
// Window Size --> XX%
var _p: longint;
begin
_P := TMenuItem(Sender).Tag;
ClientWidth := (Player.VideoWidth * _p) div 100;
ClientHeight := (Player.VideoHeight * _p) div 100;
end;
// --------------------------------------------------------------------
procedure TForm2.SubMenu8Click(Sender: TObject);
// Correct aspect ratio.
begin
with Player
do ClientHeight := (ClientWidth * VideoHeight) div VideoWidth;
end;
// --------------------------------------------------------------------
procedure TForm2.Menu3Click(Sender: TObject);
// Show/Hide main window.
begin
Form1.Visible := not Form1.Visible;
end;
procedure TForm2.Menu12Click(Sender: TObject);
// Show/Hide playlist.
begin
Form3.Visible := not Form3.Visible;
end;
// --------------------------------------------------------------------
procedure TForm2.Menu4Click(Sender: TObject);
// Play
begin
Form1.PlayCurrentFile;
end;
procedure TForm2.Menu5Click(Sender: TObject);
// Pause
begin
Form1.PauseCurrentFile;
end;
procedure TForm2.Menu6Click(Sender: TObject);
// Stop
begin
Form1.StopCurrentFile;
end;
// --------------------------------------------------------------------
procedure TForm2.Menu10Click(Sender: TObject);
// Previous
begin
Form1.PlayPrevFile;
end;
procedure TForm2.Menu11Click(Sender: TObject);
// Next
begin
Form1.PlayNextFile(true);
end;
// --------------------------------------------------------------------
procedure TForm2.Menu8Click(Sender: TObject);
// Open File
begin
Form1.OpenFiles;
end;
// --------------------------------------------------------------------
procedure TForm2.Menu9Click(Sender: TObject);
// About
begin
ShowMessage(About);
end;
// --------------------------------------------------------------------
procedure TForm2.Menu7Click(Sender: TObject);
// Exit
begin
Close;
end;
// --------------------------------------------------------------------
procedure TForm2.VideoDisplayMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
begin
OrgP := Point(Left, Top);
OrgXY := ClientToScreen(Point(X, Y));
end;
// --------------------------------------------------------------------
procedure TForm2.VideoDisplayMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var _p : TPoint;
begin
if (not Form1.Visible) and (Shift = [ssLeft]) then
begin
_p := ClientToScreen(Point(X, Y));
SetBounds(OrgP.X + (_p.X - OrgXY.X),
OrgP.Y + (_p.Y - OrgXY.Y), Width, Height);
end;
end;
// --------------------------------------------------------------------
procedure TForm2.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose := false;
Form1.Close;
end;
// --------------------------------------------------------------------
procedure TForm2.RunFN(_fn: string);
begin
if (not fileexists(_fn)) then exit;
if UpperCase(ExtractFileExt(_fn)) <> UpperCase(EXT_AMP) then
begin
Form3.ListBox1.Items.Clear;
Form3.ListBox1.Items.Add(_fn);
CurrentFile := _fn;
CurrentIdx := 0;
Form3.Listbox1.Repaint;
Form1.LoadAndPlay;
end else begin
Form3.ListBox1.Items.LoadFromFile(_fn);
CurrentIdx := -1;
Form3.Listbox1.Repaint;
Form1.PlayNextFile(false);
end;
end;
// --------------------------------------------------------------------
procedure TForm2.FormCreate(Sender: TObject);
var _l : longint;
begin
// Remove caption
_l := GetWindowLong(Handle, GWL_STYLE);
_l := _l xor WS_CAPTION;
SetWindowLong(Handle, GWL_STYLE, _l);
// Default size
Width := 320;
Height := 240;
// Check parameters
if (paramcount > 0) then
begin
ShowWindow(Form1.Handle, SW_SHOW);
Application.ProcessMessages;
RunFN(paramstr(1));
end;
end;
// --------------------------------------------------------------------
end.