mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-05 15:07:50 +02:00
61 lines
2.0 KiB
ObjectPascal
61 lines
2.0 KiB
ObjectPascal
program mciapi2;
|
|
|
|
uses
|
|
Os2Def, PMWin, mciapi;
|
|
|
|
function ClientWindowProc (Window, Msg: cardinal; MP1, MP2: pointer): pointer;
|
|
cdecl; export;
|
|
var
|
|
Ps: cardinal;
|
|
R: TRectL;
|
|
begin
|
|
ClientWindowProc := nil;
|
|
case Msg of
|
|
wm_Paint: begin
|
|
PS := WinBeginPaint (Window, 0, @R);
|
|
WinFillRect (PS, @R, SYSCLR_WINDOW);
|
|
WinEndPaint (PS);
|
|
end;
|
|
else ClientWindowProc := WinDefWindowProc (Window, Msg, MP1, MP2);
|
|
end;
|
|
end;
|
|
|
|
const
|
|
idClientWindow = 11000;
|
|
WinFlags: cardinal = fcf_TitleBar + fcf_SysMenu + fcf_SizeBorder +
|
|
fcf_MinMax + fcf_TaskList + fcf_NoByteAlign;
|
|
ClassName = 'MYVIEW';
|
|
|
|
var
|
|
Anchor, MsgQue: cardinal;
|
|
Message: TQMsg;
|
|
Frame, Client: cardinal;
|
|
begin
|
|
Anchor := WinInitialize(0);
|
|
{ It might be beneficial to set the second parameter of the following }
|
|
{ call to something large, such as 1000. The OS/2 documentation does }
|
|
{ not recommend this, however } MsgQue := WinCreateMsgQueue (Anchor, 0);
|
|
if MsgQue = 0 then Halt (254);
|
|
|
|
WinRegisterClass (Anchor, ClassName, proc (@ClientWindowProc), cs_SizeRedraw,
|
|
SizeOf (pointer));
|
|
Frame := WinCreateStdWindow (hwnd_Desktop, 0, WinFlags, ClassName,
|
|
'MMPM/2 TEST', 0, 0, idClientWindow, Client);
|
|
if (Frame <> 0) then
|
|
begin
|
|
WinSetWindowPos (Frame, 0, 0, WinQuerySysValue (hwnd_Desktop,
|
|
sv_CyScreen) - 200, 200, 200, swp_Move + swp_Size + swp_Activate +
|
|
swp_Show);
|
|
(* Play a wave file set to valid window handle *)
|
|
|
|
mciPlayFile(Frame, 'movie.avi', MCI_ASYNC, 'MMPM/2 TEST MOVIE', 0);
|
|
|
|
while WinGetMsg (Anchor, Message, 0, 0, 0) do
|
|
WinDispatchMsg (Anchor, Message);
|
|
|
|
WinDestroyWindow (Frame);
|
|
end;
|
|
WinDestroyMsgQueue (MsgQue);
|
|
WinTerminate (Anchor);
|
|
end.
|