Pas de form

Benitora Messages postés 9 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 16 septembre 2004 - 1 févr. 2004 à 15:40
Benitora Messages postés 9 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 16 septembre 2004 - 2 févr. 2004 à 18:29
Bonjour,
Mon problème est assez simple, et je n'ai pas trouver bonheur dans le forum :s donc je le pose :
je voudrais ne PAS inclure le fichier forms.pas et faire en sorte que le programme tourne en tache de fond.

Également je souhaiterais savoir comment créer une form sans le fichier forms.pas, càd comme sous C++ par exemple où on indique les dimensions et les propriété d'une fenetre. J'avais déjà vu des programmes comme ça et le gains de tailles était énorme, de pres de 350ko en utilisant le ficier forms.pas et une 40ene de ko sans avec une forme crée entièrement.

J'espère trouver une réponse, merci.

2 réponses

yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
1 févr. 2004 à 22:32
menu/voir/unités/Project1

program Project1;

uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Dialogs,
Unit1 in 'Unit1.pas';

{$R *.res}
var x:Integer;
begin
x:=0;
while x=0 do
begin
sleep(500);
end;
end.

note:le programme est répertorié dans le task ,on peut lui faire écouter les messages windows et lui faire exécuter une tâche en fonction d'un message en particulier ,évidemment ici je n'ai pas créer la procédure en question et le programme ne fait rien.

pour créer les fenêtres en runTime ,
on utilise Win32 Core API ,
mais cela en vaut-il la peine ...

unit Unit1;
interface
uses
Windows,Classes,Dialogs;
procedure CreateW;
implementation

function RegisterClass: Boolean;
var
WindowClass: TWndClass;
begin
WindowClass.Style := CS_HREDRAW or CS_VREDRAW;
WindowClass.lpfnWndProc := @DefWindowProc;
WindowClass.cbClsExtra := 0;
WindowClass.cbWndExtra := 0;
WindowClass.hInstance := hInstance;
WindowClass.hIcon := 0;
WindowClass.hCursor := 0;
WindowClass.hbrBackground := COLOR_WINDOW;
WindowClass.lpszMenuName := nil;
WindowClass.lpszClassName := 'TestClass';
Result := Windows.RegisterClass(WindowClass) <> 0;
end;

procedure CreateW;
var
hWindow: HWND;
begin
if not RegisterClass then
begin
ShowMessage('Erreur Register');
Exit;
end;

hWindow := CreateWindowEx(
0,
'TestClass',
'Window',
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,
0,
hInstance,
nil);

if hWindow <> 0 then
begin
ShowWindow(hWindow, SW_SHOWNORMAL);
UpdateWindow(hWindow);
end
else
begin
ShowMessage('Erreur Création');
Exit;
end;
end;

end.

yve
0
Benitora Messages postés 9 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 16 septembre 2004
2 févr. 2004 à 18:29
Merci beaucoups à toi.
0
Rejoignez-nous