Obligement - L'Amiga au maximum

Mercredi 02 avril 2025 - 12:32  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


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

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



[Retour en haut] / [Retour aux articles]