Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LE MINIMUM POUR UNE FENÊTRE WIN32


Information sur la source

Description

Cliquez pour voir la capture en taille normale
Ce source explique un peu une face "cachée" (Bien connue) de la VCL.

Les environement de developpement de C/C++ non RAD proposent généralement un type d'application "GUI" dans leur nouveau projet.

GUI signifie Graphical User Interface, c'est à dire dans notre cas une application windows classique non console.

Ce code est une simple une proposition de traduction qui est loin d'être la première, mais cette version à deux avantages :
Elle est abondament commentée.
Elle ne perd pas le code indispensable dans le code du reste d'une appli utile.

Les avantages par rapport à une utilisation classique de Delphi sont a priori inexistant, excepté un gain en taille conséquent :

362 Ko pour une appli utilisant la VCL.
15 Ko pour une appli de ce code.
(Sous Delphi 7)

Un inconvénient majeur étant que l'on ne puisse pas mettre en place les composants à la souris...
Un autre est la perte en portabilité du code vers Linux.

Le principe de ce type d'appli est simple, même si la VCL simplifie encore le travail :


La création d'une fenêtre ce fait en 2 étapes :
D'abord, il faut définir une classe de fenêtre et la signaler à windows.
On peut ensuite instancier des fenêtres de cette classe.


Pour ce qui est de l'execution de l'application à proprement parler (Application.Run), c'est à peine plus sioux.
Si les programmes ne bouclaient pas, ils se fermeraient en quelques secondes.
Donc il boucle sur quelque chose...
Ce quelque chose, c'est la récupération des messages envoyés par Windows à l'appli.
L'un des rôle de windows est en effet de dire à chaque appli tournant :
  On as cliqué sur ta fiche numéro x à cet endroit.
  Tu pourrais redessiner le contenu de ta fiche y ?
  L'utilisateur est en train de redimenssionner ta fiche z.

Et on traite tous ces messages (qui arrivent en file) jusqu'à la réception d'un message ou Windows demande de fermer l'appli.
Les messages sont d'abord réceptionner au niveau de la boucle de traitement des messages de l'application, qui les distribue ensuite à ses différentes fiches, ou les traite elle même.

Tout ça permet de comprendre un peu mieux comment se fait techniquement la programmation évenementielle.
Cela explique aussi le gel des applis qui ne veulent pas se fermer quand on clique sur la crois par exemple :

Windows envoie le message de fermeture à l'appli, mais celle-ci executant un évènement très long (voir bouclant), elle ne boucle plus sur la réception de ses messages.
Le message de fermeture reste donc dans la file d'attente sans être traité...
Windows s'en aperçoit parfois, et propose alors à l'utilisateur une solution plus radicale : l'éradication pure et simple du processus.

C'est pour cela que certaines appli, sachant un traitement très long, regardent la file de messages de temps en temps en cours de celui-ci.
Sous Delphi, ça se fait très facilement via Application.ProcessMessages.

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de cirec le 27/11/2006 14:24:13 administrateur CS

Salut,
as-tu déjà vu cette source de Shining ?
http://www.delphifr.com/codes/SFCDELPHILITE-AVEC-LIBRAIRIE-VOUS-POUVEZ-CREER-APPLICATION-WINDOWS_37354.aspx
@+

signaler à un administrateur
Commentaire de rt15 le 28/11/2006 13:34:35

Nan je l'avais pas vu.
C'est effectivement le même système, sauf que lui est plus courageux que moi.

Par contre j'ai adoré sa mise en place de callback (ligne 123 de SfcDL_Controls) !

Ch'tite execution de code dans le tas, du grand art !

Par contre, faut pas que le PC cible le protège son tas.

C'est quand même bizarre qu'il soit obligé d'en arriver là...

signaler à un administrateur
Commentaire de Delphiprog le 28/11/2006 23:51:54 administrateur CS

Cela va réveiller de vieux souvenirs à ceux qui ont connu l'époque de Turbo Pascal pour Windows, l'ancêtre de Delphi.

C'est bien fait et très bien expliqué.
Bravo rt15.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Création d'une GUI [ par manu00 ] Salut tout le monde,je suis debutant et j'ai une question a poser.J'aimerai créer une interface pour un programme DOS (en mode console).Le probleme c' Comment capturer le contenu d'une fenêtre [ par bebeb3 ] slt, Je cherche le moyen de récupurer le contenu text d'une fenêtre (IE, notepad, etc) juste en n'ayant l'handle de la fenêtre. Y a t-il une api win Message GroupWise [ par birdyz ] Salut à tousMon soucis est le suivant. Je dois intégrer un envoi de mail à une application. Mon problème est que ses messages doivent partir de notre Message interne L470 [ par Amadeus ] Quelqu'un saurait'il a quoi correspond l'erreur interne L470 ? Interface SAARI (SAGE) [ par mfondi ] Slut !qqun peut me dire comment envoyer des données à SAARI compta Ligne 100. Type de fichier de transfert, codes, etc ...A++ Message d'erreur "floating point.." sur certain pc [ par kristof708 ] slt a tousvoila, qui peut m'aider a conprendre ce qui deconneje recupere 2 valeurs ds un edit avec une virguleje dois additionner ces 2 valeurs par ex bd delphi 3 Message ou Interpretation introuvable [ par Christianl ] j ai devellope un application multi bd sous delphi 3, et suite a une erreur de vbx... ??? je ne peux plus acceder à une seul des bases ouvertes(dbase) Ce Message N'Est Pas Un Message De Pub : [ par BenXbox ] Ce Message N'Est Pas Un Message De Pub :J'ai créer un forum d'entraide et de sources delphi :Comme le forum viens d'ouvrire il n'y a pas grand mondes export de delphi à excel [ par FeuilleMorte ] Voilà j'utilisais le code suivant et tout se passait comme sur des roulette mais un jour le message suivant est apparu : "Le projet toto.exe a provoqu Structure Message [ par MicLau ] Bonjour,Je dois envoyer un message via TCPIP d'un ordinateur à un autre. Mon problème est le suivant :Lorsque je concatène 3 champs, Delphi compresse


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.