[fpc-pascal] Windows test program

Carsten Bager carsten at beas.dk
Fri Jun 24 12:49:57 CEST 2011


That did the trick.
Carsten

> MSDN states that the first ShowWindow is ignored if a STARTUPINFO is
> provided. 
> 
> winhello.pp has
>     ShowWindow(hWindow, CmdShow);
>     ShowWindow(hWindow, SW_SHOW);
> This is the difference with your test program.
> 
> 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é : vendredi 24 juin 2011 08:53
> > À : FPC-Pascal users discussions
> > Objet : RE : [fpc-pascal] Windows test program
> > 
> > 
> > Thanks for the help.
> > I tried the winhello.pp. It works OK.
> > I can still not get my program to show from the command line 
> > (do not use gdb), but now I 
> > have something to work on (it shows OK from explorer).
> > Regards Carsten
> > 
> > > OK. Found the problem. The program runs ok from the 
> > explorer but not 
> > > from inside lazarus. That's where the difference in process 
> > > STARTUPINFO structure comes from. Actually it is gdb that passes on 
> > > the SW_HIDE in STARTUPINFO. Running the program from the 
> > command line 
> > > is fine but doesn't show anything when lauched from gdb.
> > > 
> > > Ludo
> > > 
> > > > -----Message d'origine-----
> > > > De : fpc-pascal-bounces at lists.freepascal.org
> > > > [mailto:fpc-pascal-bounces at lists.freepascal.org] De la part 
> > > > de Ludo Brands
> > > > Envoyé : jeudi 23 juin 2011 19:35
> > > > À : carsten at beas.dk; 'FPC-Pascal users discussions'
> > > > Objet : RE : [fpc-pascal] Windows test program
> > > > 
> > > > 
> > > > 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
> > > > > 
> > > > 
> > > > _______________________________________________
> > > > fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org 
> > > > http://lists.freepascal.org/mailman/listinfo/fpc-pascal
> > > > 
> > > 
> > > _______________________________________________
> > > fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org 
> > > http://lists.freepascal.org/mailman/listinfo/fpc-pascal
> > 
> > 
> > _______________________________________________
> > fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org 
> > http://lists.freepascal.org/mailman/listinfo/fpc-pascal
> > 
> 

Med venlig hilsen
Carsten Bager

BEAS A/S
Brørupvænget 10
DK-7650 Bøvlingbjerg
Tlf. : +45 9788 5222 Fax : +45 9788 5434
www.beas.dk





More information about the fpc-pascal mailing list