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-boun...@lists.freepascal.org > [mailto:fpc-pascal-boun...@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@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal