[fpc-pascal] Windows test program
Carsten Bager
carsten at beas.dk
Fri Jun 24 08:52:39 CEST 2011
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
More information about the fpc-pascal
mailing list