[fpc-pascal] Windows test program

Ludo Brands ludo.brands at free.fr
Thu Jun 23 19:34:54 CEST 2011


The problem is in the line 
ShowWindow(Window, CmdShow);
CmdShow is SW_HIDE (0) with fpc and SW_RESTORE (9) in Delphi. CmdShow is a
variable that is initialised in system.pp from the process STARTUPINFO
structure. Don't know why fpc starts the process with SW_HIDE.  
Change the line to 
ShowWindow(Window, SW_RESTORE);
and the window will display;

Ludo

> -----Message d'origine-----
> De : fpc-pascal-bounces at lists.freepascal.org 
> [mailto:fpc-pascal-bounces at lists.freepascal.org] De la part 
> de Carsten Bager
> Envoyé : jeudi 23 juin 2011 17:36
> À : FPC-Pascal users discussions
> Objet : [fpc-pascal] Windows test program
> 
> 
> Hi
> I have this test program. It compiles and runs (shows) under 
> Delphi (5.0). I can compile (and run it) it under FPC (2.4.4) 
> but it does not show anything. I can see it in 
> the Windows Job list -> Processes but not under Programmes. 
> Anybody have a hint.
> 
> Regards
> Carsten
> 
> 
> 
> C:\FPC\2.4.4\bin\i386-win32\fpc -WG generic.dpr
> Free Pascal Compiler version 2.4.4 [2011/04/23] for i386 
> Copyright (c) 1993-2010 by Florian Klaempfl Target OS: Win32 
> for i386 Compiling generic.dpr Compiling resource generic.or 
> Linking generic.exe 106 lines compiled, 0.9 sec , 26992 bytes 
> code, 1688 bytes data
> 
> {************************************************}
> {                                                }
> {   Demo program                                 }
> {   Copyright (c) 1991, 2007 by CodeGear         }
> {                                                }
> {************************************************}
> 
> { "Generic" Windows application written in Turbo Pascal }
> 
> program Generic;
> 
> {$R GENERIC.RES}
> 
> uses Messages,Windows;
> 
> const
>   SAppName = 'Generic';
>   SAboutBox = 'AboutBox';
>   SWindowName = 'Turbo Pascal Generic';
>   IDOK = 1;
>   ID_OK = IDOK;
>   IDCANCEL = 2;
>   ID_CANCEL = IDCANCEL;
> 
> 
> 
> const
>   idm_About = 100;
> 
> function About(Dialog: HWnd; Message:LongWord; WParam,LParam: 
> Longint):LongInt; 
> stdcall;
> begin
>   About := ord(True);
>   case Message of
>     wm_InitDialog:
>       Exit;
>     wm_Command:
>       if (WParam = id_Ok) or (WParam = id_Cancel) then
>       begin
>         EndDialog(Dialog, 1);
>         Exit;
>       end;
>   end;
>   About := ord(False);
> end;
> 
> function WindowProc(Window: HWnd; Message:longword; 
> WParam,LParam: Longint): 
> Longint; stdcall;
> begin
>   WindowProc := 0;
>   case Message of
>     wm_Command:
>       if WParam = idm_About then
>       begin
>         DialogBox(HInstance, SAboutBox, Window, @About);
>         Exit;
>       end;
>     wm_Destroy:
>       begin
>         PostQuitMessage(0);
>         Exit;
>       end;
>   end;
>   WindowProc := DefWindowProc(Window, Message, WParam, LParam); end;
> 
> var
>   WindowClass: TWndClass = (
>     style: 0;
>     lpfnWndProc: @WindowProc;
>     cbClsExtra: 0;
>     cbWndExtra: 0;
>     hInstance: 0;
>     hIcon: 0;
>     hCursor: 0;
>     hbrBackground: COLOR_WINDOW;
>     lpszMenuName: SAppName;
>     lpszClassName: SAppName);
> 
> procedure WinMain;
> var
>   Window: HWnd;
>   Message: TMsg;
> begin
>   { Register the window class }
>   WindowClass.hInstance := HInstance;
>   WindowClass.hIcon := LoadIcon(0, idi_Application);
>   WindowClass.hCursor := LoadCursor(0, idc_Arrow);
>   if Windows.RegisterClass(WindowClass) = 0 then
>     Halt(1);
>   { Create and show the window }
>   Window := CreateWindow(SAppName, SWindowName, 
> ws_OverlappedWindow,cw_UseDefault,cw_UseDefault, 320, 240,
>     0, 0, HInstance, nil);
>   ShowWindow(Window, CmdShow);
>   UpdateWindow(Window);
>   { and crank up a message loop }
>   while GetMessage(Message, 0, 0, 0) do
>   begin
>     TranslateMessage(Message);
>     DispatchMessage(Message);
>   end;
>   Halt(Message.wParam);
> end;
> 
> begin
>   WinMain;
> end.
> 
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org 
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
> 




More information about the fpc-pascal mailing list