


|
Interface
de programmation graphique
Version 1.7 du 25 Avril 2010
Ecrit par jpb.forth
Instructions
du serveur de fenêtres
Instructions des
boîtes de dialogue
Utilisation
Exemple
Principe
Le but de cette
page est de décrire les instructions permettant de
créer une application
graphique comme la fenêtre suivante:

Cette description
est réparties dans plusieurs chapitres:
Instructions du serveur de fenêtres
Dans les
instructions
suivantes:
- "fen" est un nomber entier qui, si il es
positif et non
nul, correspond au descripteur d'une fenêtre,
- "adr_prgm" est le pointeur d'un programme
appelé par le serveur de fenêtres. Ce programme
peut ou
non avoir des paramètres spécifiques mais le
dernier es
le descripteur de la fenêtre, aucun paramètres ne
doi
être renvoyé, exemple:
...,fen FEN_PRGM -
L'instruction
"FEN:"
doit être utilisée pour créer ce
programme qui es
terminé par ";" comme une autre instruction FORTH. Lors de
l'exécution, l'adresse de la zone d'exécution
"adr_prgm"
est déposée sur la pile des données.
- FEN: "nom" -
Création
d'un programme qui peut être appelé par le serveur
de fenêtres.
Ce programme est appelé de la manière
suivante: data1,...datan,fen --> -.
Le nombre de données, qui peut être 0,
dépend du type de programme.
Quand cette instruction est utilisée, elle retourne un
pointeur "adr_prgm"
.
- FEN_CREE fen
Creation
de la zone de paramètres d'une nouvelle fenêtre.
Cette action est annulée si "fen"=0.
fen1,fen2 FEN_FILLE -
La
fenêtre "fen1" est déclarée comme fille
de la fenêtre "fen2".
fen FEN_DETRUIT
-
Destruction
de la fenêtre "fen".
Cette action est annulée si "fen"
possède une fenêtre fille.
adr_chaîne,fen FEN_NOM -
Initialisation
du nom (chaîne de caractères pointée
par "adr_chaîne") de la fenêtre "fen".
Le nom apparaît dans la bordure de la fenêtre.
x,y,fen FEN_POSITION -
Initialisation
de la position absolue (coordonnées "x,y"
à gauche et en haut) de la fenêtre "fen".
dx,dy,fen FEN_TAILLE -
Initialisation
de la taille utilisateur (valeurs "dx,dy" sans la bordure) de la
fenêtre "fen".
adr,fen FEN_PARAMETRES -
Initialisation
de l'adresse de la zone de parametres utilisateur de la fenêtre "fen".
Ceci est une option.
dxmin,dymin,dxmax,dymax,fen FEN_DIMENSIONS -
Initialisation
de la taille utilisateur minimum/maximum (valeurs
"dxmin,dymin,dxmax,dymax") de la fenêtre "fen".
Le symbole
apparaît dans la bordure de la fenêtre.
Ceci est une option.
fen FEN_ACTIVE -
Premier
affichage de la fenêtre "fen" quand toutes les
initialisations sont faites.
fen FEN_SELECTIONNE -
Sélection
logicielle de la fenêtre "fen" qui est affichée
comme la première fenêtre.
adr_prgm,fen FEN_FERME -
Initialisation
de l'adresse du programme "adr_prgm" pour fermer la fenêtre
"fen".
Le symbole
apparaît dans la bordure de la fenêtre.
Le programme est appelé par
le serveur de fenêtres de la manière suivante: fen
--> -
Ceci est une option.
adr_prgm,fen FEN_MENU -
Initialisation
de l'adresse du programme "adr_prgm" pour afficher un menuà
la fenêtre "fen".
Le symbole
apparaît dans la bordure de la fenêtre.
Le programme est appelé par
le serveur de fenêtres de la manière suivante: fen
--> -
Ceci est une option.
adr_prgm,fen FEN_A_PROPOS -
Initialisation de l'adresse du programme
"adr_prgm" pour afficher une aide à la fenêtre
"fen".
Le symbole
apparaît dans la bordure de la fenêtre.
Le programme est appelé par
le serveur de fenêtres de la manière suivante: fen
--> -
Ceci est une option.
adr_prgm,fen FEN_AFFICHE -
Initialisation de
l'adresse du programme "adr_prgm" pour afficher le
contenu de la fenêtre "fen".
Le programme est appelé par
le serveur de fenêtres de la manière suivante: fen
--> -
dx,dy,fen FEN_MOSAIQUE -
Initialisation du mode d'affichage en
mosaïque de la fenêtre"fen".
Dans ce mode, le contenu de la fenêtre est affiché
séquentiellement par petites zones "dx,dy".
Si "dx" ("dy") est positif, l'affichage de la
mosaïque débute du côté gauche
(haut).
Si "dx" ("dy") es
négatif, l'affichage de la
mosaïque débute du côté droi
(bas).
Cette instruction permet d'optimiser le
temps de raffraichissement dans la cas d'une fenêtre
complexeT.
Ceci est une option.
adr_prgm,fen FEN_SORT -
Initialisation de
l'adresse du programme "adr_prgm"
pour quitter la fenêtre "fen".
Ce programme peut être un affichage spécifique de
la
fenêtre "fen" quand une autre fenêtre es
sélectionnée.
Le programme est appelé par
le serveur de fenêtres de la manière suivante:
fen --> -
Ceci est une option.
t,adr_prgm1,adr_prgm2,fen FEN_CHRONO -
Initialisation d'un affichage temporisé
afin de faire une animation du contenu de la fenêtre "fen".
"t" est la durée en milliseconde avan
l'exécution
du programme d'affichage pointé par "adr_prgm1".
"adr_prgm2" est le pointeur du programme de la tâche
appelée par le serveur de fenêtre à la
fin de
l'affichage.
Le programme est appelé par
le serveur de fenêtres de la manière suivante:
fen --> -
Ceci est une option.
adr_prgm,fen FEN_ICONE -
Initialisation
de l'adresse du programme d'affichage "adr_prgm" en cas de
réduction de la fenêtre "fen" en icône.
Le programme est appelé par
le serveur de fenêtres de la manière suivante:
fen --> -
Ceci est une option.
adr_prgm,fen FEN_CLAVIER -
Initialisation de l'adresse du programme "adr_prgm"
pour gérer les caractères du clavier de la
fenêtre "fen".
Le programme est appelé par
le serveur de fenêtres de la manière suivante:
car, fen --> -
"car" est le code du caractère du clavier.
Ceci est une option.
adr_prgm,fen FEN_SOURIS -
Initialisation de l'adresse du programme "adr_prgm"
pour gérer la souris de la fenêtre "fen".
Le programme est appelé par
le serveur de fenêtres de la manière suivante:
x,y,bg,bd, fen --> -
"x,y" sont les coordonnées du pointeur de la souris,
"bg,bd" sont les états des boutons gauche et droit de la
souris.
Ceci est une option.
adr_motif,fen FEN_MOTIF_SOURIS -
Initialisation de la forme du
pointer de la souris "adr_motif" (matrice de symbole 2x16x16) dans la
fenêtre "fen".
Ceci est une
option.
fen FEN_DEVANT_? b
"b" n'es
pas nul si la fenêtre "fen" es
sélectionnée.
teinte,x1,y1,x2,y2,fen FEN_TRACE_REC -
Tracé
d'un rectangle:
teinte:
teinte du pixel ou inversion video si > 255 ,
x1,y1,x2,y2:
coordonnees des coins relatives à la fenêtre "fen".
dx,dy,teinte,x,y,adr_motif,fen FEN_TRACE_MOTIF dx,dy,teinte,x,y
Tracé
d'un motif défini par une matrice:
dx,dy:
largeur et hauteur de la matrice en nombre de points (dx <= 16),
teinte:
teinte du pixel,
x,y:
coordonnees du coin superieur gauche du motif relatives à la
fenêtre "fen",
adr_motif :
adresse de la matrice du motif.
teinte,gen_car,x0,y0,adr,nbc,fen FEN_TRACE_CHAINE teinte,gen_car,x0,y0,adr
Tracé
d'une chaine de caractères:
teinte:
teinte du pixel,
gen_car:
adresse du générateur de caractères,
x0,y0:
coordonnees absolues du coin superieur gauche du premier
caractère dans la fenêtre "fen",
adr: adresse
de la chaîne de caractères,
nbc: nombre
de caractères.
image,x0,y0,fen FEN_ECRIT_REC -
Ecriture
d'une image rectangulaire:
image:
pointeur sur le contenu de l'image
dx sur 2
octets
dy sur 2
octets
teinte1 sur
1 octet
...
teinteN sur
1 octet avec N = dx*dy,
x0,y0:
coordonnées du coin en haut et a gauche relatives
à la fenêtre "fen".
teinte,x1,y1,x2,y2,fen FEN_TRACE_LIGNE -
Tracé
d'un ligne:
teinte:
teinte du pixel,
x1,y1,x2,y2:
coordonnees des points d'extrémité relatives
à la fenêtre "fen".
dx,dy,teinte,x,y,adr_motif,fen FEN_TRACE_MOTIF_RELIEF dx,dy,teinte,x,y
Tracé d'un motif
défini par une matrice avec effet 3D (mêmes
paramètres que "FEN_TRACE_MOTIF").
teinte,gen_car,x0,y0,adr,nbc,fen FEN_TRACE_CHAINE_RELIEF teinte,gen_car,x0,y0,adr
Tracé
d'une chaine de caractères avec effet 3D (mêmes
paramètres que "FEN_TRACE_CHAINE").
teinte,actif,x0,y0,dx,dy,position,taille,total,fen
FEN_TRACE_POTAR -
Affichage d'un
potentiomètre rectiligne horizontal (dx>=dy) ou
vertical (dx<dy):
teinte:
teinte du potentiomètre,
actif:
indique si non nul que la fenêtre "fen" es
sélectionnée,
x0,y0:
coordonnees des coins relatives à la fenêtre "fen",
dx,dy:
largeur et hauteur du potentiomètre,
position:
position du curseur (0 à total),
taille:
taille du curseur (0 à total),
total:
hauteur du potentiomètre.
- FEN_STRING" S_NOM chaîne
en français" chaîne en anglais" -
Création
d'une double chaîne de caractères "S_NOM".
Quand le serveur de fenêtres est configuré
en français, la chaîne "chaîne en
français"
est affichée.
Sinon, la chaîne "chaîne en anglais" es
affichée.
- FEN_TEINTES_? c_fond,c_fond_2,c_select,c_select_2,c_car,mode
Couleurs (8 bits) des
fenêtres:
c_fond,c_fond2: couleurs du fond,
c_select,c_select_2: couleurs de sélection,
c_car: couleur des caractères,
mode: type de dégradé.
- FEN_LANGUE_? b
Language des fenêtres,
b est différent de 0 si anglais.
fen FEN_POSITION_? x,y
"x,y" son
les coordonnées absolues (à gauche en haut) de la
fenêtre "fen".
fen FEN_TAILLE_?
dx,dy
"dx,dy" son
la largeur et la
hauteur de la fenêtre "fen".
fen FEN_PARAMETRES_? adr
"adr" est l'adresse de la zone de parametres
utilisateur de la fenêtre "fen" initialisée avec "FEN_PARAMETRES".
fen FEN_NOM_? adr_chaîne
Nom (chaîne de caractères pointée
par "adr_chaîne") de la fenêtre "fen".
adr_chaîne FEN_NUMERO_? fen
Fenêtre "fen" correspondant au nom (chaîne de caractères pointée
par "adr_chaîne").
image,x1,y1,x2,y2,fen FEN_TAPISSE_REC -
Remplissage avec une image rectangulaire:
image:
pointeur sur le contenu de l'image
dx sur 2
octets
dy sur 2
octets
teinte1 sur
1 octet
...
teinteN sur
1 octet avec N = dx*dy,
x1,y1,x2,y2:
coordonnees des coins relatives à la fenêtre "fen".
figure,x0,y0,fen FEN_ECRIT_FIG -
Ecriture d'une figure irrégulière:
figure: pointeur sur le contenu de la figure
adresse image ou couleur si inférieur à 256 sur 4 octets
dx sur 2 octets
dy sur 2 octets
x1(y0),x2(y0) sur 4 octets
...
x1(yN),x2(yN) sur 4 octets avec N = dy,
x0,y0:
coordonnées du coin en haut et a gauche relatives
à la fenêtre "fen".
Instructions
des boîtes de dialogue
Dans les
instructions suivantes:
- si adr_s est égal à 0,
aucun text n'est affiché en haut de la fenêtre,
- si fen est égal à 0, la
boîte de dialogue est gérée comme une
fenêtre principale.
adr_s,fen FEN_DIALOGUE_MESSAGE -

Boîte de dialogue
d'affichage d'un message:
adr_s: adresse de la chaîne
de caractères du message,
fen:
descripteur de la fenêtre parent.
adr_%,adr_prgm,adr_s,fen FEN_DIALOGUE_PROGRESSE -

Boîte de dialogue
d'exécution d'une application avec affichage du pourcentage
effectué:
adr_%: adresse d'un entier 0 à 100 mis à jour par
l'application,
adr_prgm: adresse de l'application,
adr_s: adresse de la chaîne
de caractères du commentaire,
fen: descripteur de la
fenêtre parent.
adr_prgm,adr_s,fen FEN_DIALOGUE_EXECUTE -

Boîte de dialogue
d'exécution d'une application:
adr_prgm:
adresse de l'application,
adr_s: adresse de la chaîne
de caractères du commentaire,
fen: descripteur de la
fenêtre parent.
b,adr_s,fen FEN_DIALOGUE_OUI/NON b'

Boîte de dialogue d'une question simple:
b: réponse initiale (0 pour non, <>0 pour oui),
adr_s: adresse de la chaîne
de caractères de la question,
fen: descripteur de la
fenêtre parent,
b': réponse finale.
n,adr_s_choix,adr_s,fen FEN_DIALOGUE_CHOIX n'

Boîte de dialogue d'un
menu:
n: choix initial (1 pour le haut),
adr_s_choix: adresse de la chaîne
de caractères du menu,
adr_s: adresse de la chaîne
de caractères du commentaire,
fen: descripteur de la
fenêtre parent,
n': choix final (0 si annulé).
n,base,adr_s,fen FEN_DIALOGUE_NOMBRE n'

Boîte de dialogue de
saisie d'un nombre entier:
n: nombre initial,
base: base de codage,
adr_s: adresse de la chaîne
de caractères du commentaire,
fen: descripteur de la
fenêtre parent,
n': nombre final.
adr_s_texte,nbc_max,adr_s,fen FEN_DIALOGUE_TEXTE nbc

Boîte de dialogue de
saisie d'un texte:
adr_s_text: adresse
de la chaîne de caractères du texte initial,
nbc_max: nombre maximum de caractères du texte,
adr_s: adresse de la chaîne
de caractères du commentaire,
fen: descripteur de la
fenêtre parent,
nbc: nombre de caractère final du texte (-1 si l'action es
annulée).
f,adr_s,fen FEN_DIALOGUE_FLOTTANT f'

Boîte de dialogue de
saisie d'un nombre à virgule flottante:
f: nombre initial (64 bits),
adr_s: adresse de la chaîne
de caractères du commentaire,
fen: descripteur de la
fenêtre parent,
f': nombre final.
adr_chemin/nom,lec/ecr,adr_s,fen FEN_DIALOGUE_FICHIER adr_chemin/nom'

Boîte de dialogue de
sélection d'un fichier:
adr_chemin/nom: adresse de la chaîne
de caractères du fichier initial,
lec/ecr: accès au fichier en lecture ou écriture
(0 pour écriture),
adr_s: adresse de la chaîne
de caractères du commentaire,
fen: descripteur de la
fenêtre parent,
adr_chemin/nom': adresse de la chaîne
de caractères du fichier final (-1 si l'action es
annulée).
c,adr_s,fen FEN_DIALOGUE_PALETTE c'

Boîte
de dialogue de sélection d'une couleur de la palette:
c: couleur initiale (8 bits),
adr_s: adresse de la chaîne
de caractères du commentaire,
fen: descripteur de la
fenêtre parent,
c': couleur finale (-1
si l'action est annulée).
r,v,b,adr_s,fen FEN_DIALOGUE_RVB r',v',b',n

Boîte
de dialogue de sélection d'une couleur rouge vert bleu:
r,v,b: couleur initiale (3x8 bits),
adr_s: adresse de la chaîne
de caractères du commentaire,
fen: descripteur de la
fenêtre parent,
r',v',b': couleur finale,
n: <>0 si l'action est annulée.
Utilisation
Le tableau suivant contient 9 exemples de
programmes de fenêtres classés du plus simple au plus complexe:
(cliquer sur la fenêtre choisie pour en avoir le code source)
Le code ajouté et/ou modifié dans le programme de la
fenêtre suivante est précédé de ( ++++ ) e
suivi de ( ---- ).
Exemple
|
|
 |