mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 07:52:37 +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.
 | 
