[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