Tutorial #1-1: les fenêtres






Avec le froid qui sévit actuellement, on aurait plutôt tendance à fermer les fenêtres. Je vous propose au contraire de les ouvrir, avec un premier exemple en GFA Windows:

' ---> Fenêtre en GFA Windows
OPENW #1,_X / 2 - 320,_Y / 2 - 200,640,400,%001110000
TITLEW #1,"Pas Glop !"
REPEAT
PEEKEVENT
UNTIL MENU(1) = 4
CLOSEW #1


syntaxe:
OPENW #numéro de la fenètre, position X, position Y, largeur, hauteur, attributs

En GFW (je ne vais pas écrire GFA Windows à chaque fois !),
_X contient la largeur en pixels de l'écran et _Y sa hauteur en pixels.
Notre fenêtre étant de dimensions 640 x 400,
_X/2-320 permet de la centrer en largeur et _Y/2-200 de la centrer en hauteur.

Les attributs permettent de définir les différentes options de la fenêtre: ascenseurs, croix de fermeture, barre de titre, etc... Ils sont codés sur 9 bits dont voici la signification:

' Bit - Valeur - signification
' 0,1 - 1,2 ascenseurs verticaux avec flèche haut & flèche bas
' 2,3 - 4,8 ascenseurs horizontaux avec flèche droite & flèche gauche
' 4 - 16 Barre de titre
' 5 - 32 croix de fermeture
' 6 - 64 minimiser
' 7 - 128 maximiser
' 9 - 512 redimensionner


Dans notre exemple (
%001110000) seuls les bits 4,5 et 6 sont à 1 donc notre fenêtre aura une barre de titre, une croix de fermeture et un bouton pour l'iconifier (minimiser)
Sur Vista je me suis aperçu que si on ne met pas de croix de fermeture on ne peux pas mettre non plus de bouton pour iconifier la fenêtre (ça fonctionne sur XP)

TITLEW # numéro de la fenêtre, "titre" permet d'ajouter un titre à la notre fenêtre. Bien entendu ça ne sert que si l'on a mis le bit 4 de l'attribut à 1, sinon il n'y a pas de barre de titre...

L'instruction
PEEKEVENT contrôle la présence d'événements dans des barres de menu et des fenêtres (fermeture, redimensionnement, redraw -que nous verrons plus tard-). Elle est indispensable pour gérer la fenêtre par la suite.

Ensuite une boucle
REPEAT/UNTIL classique qui attend pour quitter que MENU(1)=4, c'est a dire qu'un clic soit détecté sur la croix de fermeture !

CLOSEW #numéro de la fenètre ferme la fenètre, donc CLOSEW #1 dans notre exemple.

Pour info, vous pouvez retrouver la syntaxe de ces instructions (et de toutes celles du GFW) dans le menu 'Help' / 'Contents' / 'Commands' / 'Basic Commands' de l'interpreteur

Vous y trouverez d'autres instructions de gestion des fenêtres (
FULLW #n, SIZEW #n, TOPW #n ...) ainsi que toutes les valeurs qu peut prendre MENU() pour la gestion des fenêtres !

Pour revenir à notre exemple, nous avons maintenant une fenêtre que l'on peut déplacer, iconifier et fermer avec la croix de fermeture.

Notre fenêtre sous Windows XP (lancé sur Windows 7 x64 via
Microsoft Virtual PC):


Dans le chapitre suivant je vous proposerai de charger une image au format bmp à l'intérieur, nous en profiterons pour voir comment gérer les "redraw"