Obligement - L'Amiga au maximum

Mercredi 23 janvier 2019 - 14:41  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Jeux Amiga

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


Trucs et astuces

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


Glossaire

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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


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 ?

C
C
C
C
C
C
C


[Retour en haut] / [Retour aux articles]