|
|||||||||||||||||||||||||||||||||||||||||||||||
|
Note : traduction par Serge Hammouche. 14. Trucs et Astuces 14.1 Introduction Ce chapitre contient plusieurs trucs et astuces utiles. 14.2 NTSC contre PAL Si vous avez un Amiga américain, vous pouvez ouvrir des écrans d'au plus 200 lignes (400 en mode entrelacé) : c'est le système NTSC. Par contre, si vous avez un Amiga européen, vos écrans pourront faire jusqu'à 256 lignes (512 en mode entrelacé) : c'est le système PAL. 14.2.1 Comment écrire des programmes utilisables sur les deux systèmes Si vous voulez écrire des programmes utilisables sur les deux systèmes, vous avez deux possibilités :
14.2.2 NTSC ou PAL ? Pour savoir sur quel système (NTSC ou PAL) votre programme s'exécute, il vous suffit d'ouvrir la bibliothèque "graphics.library", et de tester les "DisplayFlags" (indicateurs d'affichage). Voici un petit programme de démonstration :
14.3 Programmes exécutés depuis le Workbench Un programme peut être exécuté aussi bien depuis le CLI que depuis le Workbench. Quand un programme est exécuté depuis le Workbench, une fenêtre spéciale est ouverte automatiquement. Tous les affichages seront effectués dans cette fenêtre. Si le programme est exécuté depuis le CLI, aucune fenêtre ne sera ouverte, puisque les affichages se feront dans la fenêtre du CLI. Comme nous venons de le dire, une fenêtre spéciale est automatiquement ouverte quand le programme s'exécute depuis le Workbench. Cependant, il peut arriver que vous ne vouliez pas de cette fenêtre : si votre programme n'affiche rien cette fenêtre est inutile, et peut-être même gênante. Note : depuis le Workbench, cette fenêtre de sortie s'ouvre uniquement si le programme exécute une instruction comme printf(), instruction qui demande expressément l'affichage d'un message texte à l'utilisateur (ce qui peut être utile si c'est prévu dans le programme). Avec un programme sans instruction de ce type, il n'y pas de fenêtre de sortie. Pour vous débarrasser de cette fenêtre, il vous suffit de renommer votre fonction main() en _main() (notez bien le symbole "_" !). Le programme n'ouvrira alors plus de fenêtre quand il sera exécuté depuis le Workbench, mais en contrepartie vous ne pourrez bien sûr plus afficher de texte avec la fonction printf(). Si vous essayez d'afficher quelque chose sans avoir de fenêtre pour le faire, votre Amiga se plantera (ce qu'il vaut mieux éviter !). Voici maintenant deux exemples. Le premier est un programme C normal, qui affiche simplement "Hello!". Si le programme est exécuté depuis le CLI, le message sera affiché dans la fenêtre du CLI. Si le programme est exécuté depuis le Workbench, une fenêtre spéciale sera ouverte, et le message s'y affichera. Le second exemple n'ouvrira pas de fenêtre s'il est exécuté depuis le Workbench, et ne pourra donc rien afficher.
Dans l'exemple 3, la fenêtre spéciale n'est pas ouverte parce que nous avons renommé notre fonction main() en _main(). En fait, la première fonction qu'exécute le C n'est pas main(), mais la fonction _main(), qui appelle ensuite main(). La fonction _main() est une sorte de préprocesseur, qui initialise les variables argc et argv. Elle regarde également si le programme est appelé depuis le Workbench, et dans ce cas ouvre la fenêtre spéciale. Le source de la fonction _main() se trouve sur la quatrième disquette Lattice, dans le répertoire "umain.c". Si vous renommez votre propre fonction main() en _main(), la fonction _main() normale ne sera pas utilisée. La fenêtre spéciale ne sera donc pas ouverte, aucun affichage ne pourra se faire, et vous devrez initialiser vous-même les variables argc et argv. 14.4 Savoir si le programme a été lancé depuis le CLI ou le Workbench Il peut arriver que vous vouliez savoir si votre programme a été lancé depuis le Workbench ou depuis le CLI. Il est très simple de le savoir : en effet, la valeur de la variable argc est toujours au moins égale à 1 quand le programme est lancé depuis le CLI, alors qu'elle est toujours nulle dans le cas où le programme a été lancé depuis le Workbench. Voici un petit programme de démonstration, qui vous dira s'il a été lancé depuis le CLI ou depuis le Workbench.
14.5 Exemples Voici des exemples (dans le répertoire "Amiga_C_Manual/14.Trucs&Astuces") sur les sujets précédemment abordés. Exemple 1 Cet exemple vous dira si vous avez un Amiga américain (NTSC) ou européen (PAL). Exemple 2 Ce programme affichera "Hello!" dans la fenêtre du CLI s'il est lancé depuis le CLI, ou dans une fenêtre spéciale (qui sera ouverte automatiquement) s'il est lancé depuis le Workbench. Exemple 3 Ce programme n'ouvrira pas de fenêtre s'il est exécuté depuis le Workbench. L'inconvénient est qu'on ne peut plus utiliser les fonctions standard d'affichage, comme printf(). Exemple 4 Ce programme vous dira s'il a été lancé depuis le CLI ou depuis le Workbench.
|