Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : C - EasyWindow (création rapide d'une structure NewWindow)
(Article écrit par Frédéric Mazué et extrait d'Amiga News Tech - mai 1991)
|
|
Si vous programmez beaucoup, et c'est certainement le cas puisque vous lisez l'ANT,
vous en avez peut-être eu assez, à un certain moment, d'être obligé de compter
les pixels sur votre écran et de définir à chaque fois toute une structure pour
ouvrir une simple fenêtre sous Intuition. Et comme tout le monde ne possède pas
PowerWindows à la maison, je vous propose ce mois-ci un petit utilitaire destiné à vous faciliter la tâche.
Ce programme peut être indifféremment appelé depuis le CLI ou depuis le Workbench.
Dans un premier temps, le programme ouvre une fenêtre munie d'un gadget de chaîne
dans lequel vous devez taper un nom de fichier valide. Si vous ne précisez pas le chemin, c'est
dans le répertoire courant que sera créé le fichier. Si vous donnez un nom de fichier
incorrect, le programme refusera d'aller plus loin et vous redemandera un nom de fichier
valide.
Dès que cette condition est satisfaite, le programme vous demande, dans le même gadget de
chaîne, de donner un nom à la structure NewWindow que vous êtes en train de créer. Bien entendu,
ce nom peut être totalement différent du nom de fichier que vous avez donné précédemment.
Après cela, vous verrez s'ouvrir sur votre écran une fenêtre ayant pour titre "fenêtre de réglage".
Il vous suffit de déplacer, dimensionner, et positionner cette fenêtre comme bon vous semble.
Pour valider cette position, cliquez le gadget de fermeture de la fenêtre de réglage.
Les caractéristiques de la fenêtre au moment de la fermeture seront enregistrées dans la structure NewWindow
et écrites dans le fichier.
Ensuite s'ouvrira une fenêtre munie d'une ribambelle de gadgets booléens, pour la sélection des drapeaux
IDCMP. Pour sélectionner un drapeau, il suffit de cliquer dessus. Si vous changez d'avis dans la
sélection d'un drapeau, il suffit de cliquer une deuxième fois sur son gadget. Quand tout vous convient,
cliquez sur le gadget "OK" pour valider.
Même chose pour les drapeaux de la fenêtre, une ribambelle de gadgets booléens apparaît : gadget de
fermeture, barre de déplacement, etc. La sélection et la validation se font de la même façon que
précédemment. Enfin et pour terminer, vous devrez donner dans le gadget de chaîne de la toute
première fenêtre ouverte, une chaîne correspondant au titre de la fenêtre, et c'est tout.
Comme vous ne manquerez pas d'aller voir le fichier résultat des opérations, vous constaterez que la structure
est valable pour une fenêtre s'ouvrant dans l'écran du Workbench. Si cela ne vous convient pas, vous
pourrez modifier "à la main", mais rien ne vous empêche de faire mieux, c'est-à-dire compléter ce programme à
votre guise. Je ne l'ai pas fait ici car le listing est déjà important et je ne veux pas monopoliser toute
la place. Les modifications et compléments sont faciles à apporter, car le programme a été écrit dans cette
intention.
Si vous relancez une deuxième fois EasyWindow en donnant le même nom de fichier, la première structure
NewWindow créée ne sera pas écrasée mais simplement la deuxième lui fera suite. Vous pouvez également modifier le
programme en ajoutant une boucle de façon à avoir la possibilité de créer plusieurs structures NewWindow
d'un seul coup. Après tout, cela n'est qu'une affaire de convenance personnelle.
Pour les programmeurs
Je pense que ce programme est un exemple intéressant d'utilisation des gadgets. Vous y verrez comment chaîner
des gadgets booléens et comment trouver lequel est selectionné. Dans les fenêtres de sélection des drapeaux,
vous verrez que le bord des gadgets change de couleurs lors de la sélection. Ceci est fait très simplement
en donnant une structure de bord avec une couleur différente dans le champ SelectRender de la structure du
gadget. Pour assurer le maintient de la nouvelle couleur, il faut sélectionner le drapeau
TOGGLESELECT dans le champs de drapeaux des structures Gadget. On obtient alors un effet de bascule.
Vous verrez aussi un bon exemple d'utilisation et de rafraîchissement d'un gadget de chaîne.
La fonction PutCoord
Dans cette fonction, il faut transformer les dimensions de la fenêtre de réglage en chaîne de caractères.
La bibliothèque standard du SAS ne comporte pas de fonction prévue à cet effet, c'est-à-dire une
fonction capable de transformer un entier en chaîne, bien qu'il existe la fonction inverse. De plus,
les dimensions de la fenêtre ne sont pas données en entiers mais en "shorts".
En fait, il existe la fonction gctv() qui sait convertir un flottant en chaîne de caractères. C'est pour
cela que les "shorts" des dimensions de fenêtres sont d'abord castés en "double".
Les plus perspicaces
d'entre vous n'ont pas été sans remarquer que le cas du zéro est traité séparément. En effet, la fonction
gcvt() est tout à fait satisfaisante tant que le "short" casté en "double" n'est pas nul.
Le résultat est exactement le même qui si l'on avait une fonction itoa. Par contre, pour
une valeur nulle, la fonction renvoie la chaîne "0.", c'est-à-dire qu'elle ajoute arbitrarement
une virgule (enfin, un point). Je me demande bien pourquoi, mais il faut faire avec.
Le principal est dit sur ce programme qui ne comporte pas de difficultés particulières. Encore
une fois, rien ne vous empêche de le modifier à votre convenance, et même d'étendre le procédé
aux structures NewScreen et aux structures gadgets, pourquoi pas ?
Mise à jour de septembre 2020 : une version en texte et adaptée à
VBCC a été réalisée par Yann-Gaël Guéhéneuc et est disponible sur
obligement.free.fr/files/anteasywindow.lha.
Exemple de commande avec VBCC :
vc +aos68k -cpu=68020 -lamiga -lauto -lmsoft -lvc -o EasyWin.exe EasyWindow.c Data.c gcvt.c
|
|