IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

La programmation Win32 en Virtual Pascal avec OWL


précédentsommairesuivant

IV. Notre premier programme OWL : MINIMUM.PAS

Le temps est venu de créer notre premier vrai programme Windows basé sur OWL.

Comme déjà dit dans les préliminaires, OWL (Object Windows Library) est une bibliothèque d'objets génériques d'interface avec Windows. Chacun des mots soulignés a son importance et appelle des explications :

  • objets : pour travailler avec OWL, nous devons utiliser la POO (Programmation Orientée Objet). Si vous n'êtes pas rompu(e) à la POO, vous risquez de ne pas comprendre les explications données et de ne pas pouvoir progresser par la suite. Je vous conseille de vous plonger dans cet excellent tutoriel : Introduction à la programmation orientée objet par Eric Sigoillot.
    A l'exception des index de méthodes virtuelles, il n'y a en fait rien de nouveau par rapport à la programmation objet sous Turbo Pascal.
     
  • génériques : les objets de la bibliothèque OWL ont un fonctionnement très basique et tout le travail de programmation consistera à les adapter à vos besoins et à les enrichir par le biais de l'héritage.
     
  • d'interface avec Windows : les objets OWL contiennent essentiellement des routines qui réagissent aux flux de messages Windows. Tels quels, ils fournissent le travail nécessaire au fonctionnement de base d'un programme; vous pouvez modifier ou enrichir ce fonctionnement en implémentant vos propres routines.

Voici le code du plus petit programme fonctionnel possible, qui servira d'ossature pour tous les programmes que nous réaliserons par la suite :

 
Sélectionnez
Program MINIMUM;

(* Le programme Windows minimum !

   Réalisé par Alcatîz pour Developpez.com - 18-06-2006 *)

Uses OWindows;

Type tProgramme = Object(tApplication)
                    Procedure INITMAINWINDOW; virtual;
                  end;

Procedure tProgramme.INITMAINWINDOW;
(* Allocation de la fenêtre principale du programme *)
Begin
  MainWindow := New(pWindow,INIT(Nil,'Le programme minimum'));
End;

Var Programme : tProgramme;

Begin
  Programme.INIT('Minimum');
  Programme.RUN;
  Programme.DONE;
End.

Compilez et exécutez ce programme : vous obtenez une fenêtre Windows standard, que vous pouvez déplacer, agrandir, réduire, maximiser, iconiser et fermer :

Image non disponible

Détaillons à présent chacun des éléments du programme.

IV-A. L'unité OWindows

L'unité OWindows contient la déclaration des objets essentiels de la bibliothèque OWL, dont l'objet tApplication et les objets fenêtres (que nous rencontrerons très bientôt). Sa déclaration est absolument indispensable.

IV-B. L'objet tApplication

L'objet tApplication constitue la colonne vertébrale de tout programme OWL. C'est lui qui assure l'intégration du programme dans l'environnement multitâche Windows.

Tous les programmes OWL doivent créer un objet descendant de tApplication et, au minimum, redéfinir la méthode InitMainWindow pour initialiser la fenêtre principale de l'application

Dans le présent programme, nous avons appelé tProgramme le type d'objet descendant et nous avons déclaré comme variable globale une instance de cet objet appelée Programme (oui, c'est très original). C'est généralement la seule instance d'objet qui soit déclarée comme variable globale, toutes les autres étant allouées dynamiquement dans le tas global de Windows.

Vous verrez tout au long du tutoriel qu'en fait, pour la presque totalité des programmes, le bloc principal fera trois lignes :

 
Sélectionnez
Begin
  Programme.INIT('Nom du programme');
  Programme.RUN;
  Programme.DONE;
End.

Le constructeur INIT reçoit le nom du programme et se charge de l'initialisation de l'application.
La méthode RUN met en route le processus de traitement du flux de messages Windows.
Enfin, le destructeur DONE effectue les nettoyages nécessaires pour fermer proprement l'application.

IV-C. La méthode InitMainWindow

Grâce au principe de l'héritage, notre objet tProgramme hérite de tous les champs et de toutes les méthodes de l'objet tApplication.
Une de ces méthodes, InitMainWindow, assigne au champ MainWindow de l'objet tApplication l'adresse de la fenêtre principale de l'application. C'est en redéfinissant cette méthode que, tout d'abord, nous choisissons un type de fenêtre principale (vous verrez qu'il y en a plusieurs) et qu'ensuite nous initialisons cette fenêtre.

Observez bien comment la fenêtre principale est allouée :

 
Sélectionnez
  MainWindow := New(pWindow,INIT(Nil,'Le programme minimum'));

Cette syntaxe de la fonction New pour allouer dynamiquement un objet permet d'exécuter le constructeur immédiatement après l'allocation de l'objet

On peut de la même façon exécuter le destructeur d'un objet avec Dispose :

 
Sélectionnez
  Dispose(Instance_d_objet,DONE);

IV-D. L'objet fenêtre tWindow

En allouant un pointeur pWindow, nous choisissons comme type de fenêtre principale une fenêtre toute simple, non spécialisée : tWindow. Ce type d'objet est lui-même, dans la bibliothèque OWL, le parent d'autres types de fenêtres comme les fenêtres MDI (multi-documents) et de toute une série de contrôles commes les boutons, les cases à cocher, les boîtes listes, les champs d'édition, etc.
Vous verrez que, dès le programme suivant, nous utiliserons des objets descendants de tWindow comme fenêtres principales.

Voici la déclaration du constructeur INIT de l'objet tWindow :

 
Sélectionnez
Constructor INIT (aParent : pWindowsObject; aTitle : pChar);

Le premier paramètre, aParent, est l'adresse de la fenêtre parent de notre fenêtre et le second paramètre, aTitle, le titre qui sera affiché dans la barre de titre.
Notre fenêtre principale n'ayant pas de parent, nous passons la valeur Nil au constructeur. Si nous n'avions voulu aucun titre, nous aurions également transmis Nil comme second paramètre.

IV-E. En résumé

Pour créer un programme OWL :

  • On utilise au minimum l'unité OWindows
  • On déclare comme variable globale une instance d'un objet descendant de tApplication
  • On redéfinit la méthode InitMainWindow dans laquelle on alloue la fenêtre principale
  • Dans le programme principal, on exécute successivement les méthodes Init, Run et Done du descendant de tApplication

IV-F. Téléchargement des sources des programmes de cette page


précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005-2007 Jean-Luc Gofflot. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.