[fpc-pascal] Windows test program
Ludo Brands
ludo.brands at free.fr
Fri Jun 24 10:12:31 CEST 2011
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
>
More information about the fpc-pascal
mailing list