mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 11:24:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
program BasicPM;
 | 
						|
 | 
						|
uses
 | 
						|
 Os2Def, PMWin;
 | 
						|
 | 
						|
function ClientWindowProc (Window, Msg: cardinal; MP1, MP2: pointer): pointer;
 | 
						|
                                                                 cdecl; export;
 | 
						|
var
 | 
						|
 Li: longint;
 | 
						|
 Ps: cardinal;
 | 
						|
 R: TRectL;
 | 
						|
 P: TPointL;
 | 
						|
 Rgn: cardinal;
 | 
						|
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);
 | 
						|
 | 
						|
 WinMessageBox (HWND_DESKTOP, HWND_DESKTOP, 'FPC test', 'BASIC PM', 0,
 | 
						|
                                                      MB_OK or MB_INFORMATION);
 | 
						|
 | 
						|
 WinRegisterClass (Anchor, ClassName, proc (@ClientWindowProc), cs_SizeRedraw,
 | 
						|
                                                             SizeOf (pointer));
 | 
						|
 Frame := WinCreateStdWindow (hwnd_Desktop, 0, WinFlags, ClassName,
 | 
						|
                                     'BASIC PM', 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);
 | 
						|
  while WinGetMsg (Anchor, Message, 0, 0, 0) do
 | 
						|
                                              WinDispatchMsg (Anchor, Message);
 | 
						|
 | 
						|
  WinDestroyWindow (Frame);
 | 
						|
 end;
 | 
						|
 WinDestroyMsgQueue (MsgQue);
 | 
						|
 WinTerminate (Anchor);
 | 
						|
end.
 |