	8 . Le fichier .DEF



Le fichier .DEF est le plus important bien qu'aussi le plus petit. Il dfinit quels vnements 
et quels modules vous allez utiliser dans votre projet. Si votre cahier des charges est bien pr-
par, vous devez l'diter en dbut de projet puis ne plus y toucher par la suite.
Ces options sont des options de compilation. Elles influent donc directement sur la taille de 
votre code gnr, alors choisissez les bien. Par exemple, une application destine  fonction-
ner indiffremment en tant qu'accessoire ou en tant que programme, et qui possde une barre 
de menu lorsqu'elle est excute en programme, devra tre assemble avec l'option 
MDL_WIND_MENU.


	8.1 Les dfinitions possibles

	; Definition file for Genuwax Visual Assembler 4.1
	; (c) GenuWax 10/XI/96

	; put here all the labels refering to the modules/library
	; you want to include/use in your program
	; also defined here : the stack size !

GWVA_APP_OBJECT_STACK_SIZE = 1024
GWVA_MAX_PATH_LENGTH = 128

GWVA_APP_DEP_LIB_VERSION = 4
GWVA_APP_DEP_LIB_MAJOR = 1
GWVA_APP_DEP_LIB_MINOR = 02

OPT_DEBUG_VISUAL_SYSTEM_EVNT
OPT_DEBUG_VISUAL_WIND_OBJ_EVNT
OPT_DEBUG_VISUAL_FORM_OBJ_EVNT

MDL_TOS	; |
MDL_GEM	; | exclusif

MDL_RELOCATE_RSC

MDL_EVENTS
LIB_WIND_THREAD
GWVA_WIND_THREAD_MAX_THREAD_NR = 8	; >=1
GWVA_WIND_THREAD_MAX_PRIORITY_LVL = 7	; >=0
OPT_GWVA_WIND_THREAD_STATS
OPT_GWVA_WIND_THREAD_REAL_TIME

MDL_MENU

MDL_WIND
GWVA_APP_OBJ_MAX_NUMBER_WIND = 8

OPT_GWVA_WIND_REDRAW_HIDE_MOUSE

MDL_GWVA_WIND_CLONING

MDL_WIND_MENU
OPT_GWVA_WIND_MENU_TIMER
MDL_WIND_TOOLBAR

MDL_WIND_CUSTOM
MDL_WIND_TEXT
MDL_WIND_FORM
PATCH_WIND_FORM_CUSTOM_EDITABLE_TEXT
MDL_MULTIFORM
OPT_GWVA_MULTIFORM_ALWAYS_UPDATE
FORM_OBJ_PROGRESS
FORM_OBJ_SLIDER
OPT_GWVA_WIND_FORM_CUSTOM_OBJECTS

MDL_WIND_BITMAP

LIB_FILESELECTOR
LIB_FSEL_BSS_FORM
LIB_FORMULARY

LIB_HEXA
LIB_DECI
LIB_TIME_DATE

LIB_GET_FLENGTH
LIB_LOAD_FILE_IN_MEM
LIB_RECURSIVE_FILE_SEARCH

FLG_INIBE_COLOR
LIB_PALETTE

LIB_RS232
LIB_200HZ

LIB_XBRA

LIB_XHDI
LIB_XHDI_INFOPARTITION
LIB_XHDI_GETVERSION
LIB_XHDI_INQTARGET
LIB_XHDI_STOP
LIB_XHDI_READWRITE
LIB_XHDI_INQDEV2
LIB_XHDI_GETCAPACITY
LIB_XHDI_LASTACCESS

LIB_COMPARE_DISK_FREESPACE


	8.2 Variables  initialiser

Certaines variables doivent absolument tre dfinies. Ce sont :

. GWVA_APP_DEP_LIB_VERSION 		: la version des librairies Visual avec les-
quelles vous tes compatible. Si ce numro est diffrent de celui du Visual, votre ap-
plication est incompatible !
. GWVA_APP_DEP_LIB_MAJOR 		: la sous-version majeure des librairies 
Visual avec lesquelles vous tes compatible ; si diffrente : incompatibilit mineure 
qui devra tre rgle en consultant le fichier VISUAL41\MISC\VISUAL41.NEW
. GWVA_APP_DEP_LIB_MINOR 		: la sous-version mineure des librairies 
Visual avec lesquelles vous tes compatible ; si diffrente alors votre compilation  
s'excutera quand mme. Lisez le fichier VISUAL41\MISC\VISUAL41.NEW mal-
gr tout.
. GWVA_APP_OBJECT_STACK_SIZE	: la taille de la pile
. GWVA_MAX_PATH_LENGTH		: la longueur maximum d'un pathname 
(chemin+nom)


	8.3 Choisir ses modules

Vous devez dire si votre programme utilise les vnements GEM ou non :
MDL_TOS	: si pas d'affichage/vnements GEM
MDL_GEM	: 100 % GEM

Dans le cas o vous avez MDL_GEM, indiquez en plus :
. MDL_RELOCATE_RSC si vous voulez inclure votre ressource directement dans 
votre programme et le reloger ensuite pour pouvoir l'utiliser.

. MDL_EVENTS si vous voulez que le V.A. gre les vnements (AC_CLOSE, 
AP_TERM, les redraws ...) ;  priori il vous le faut, sauf dans le cas o votre pro-
gramme n'est qu'une suite de botes premptives sans fentre.

. LIB_WIND_THREAD si vous dsirez pouvoir crer des Threads fentre (sorte de 
processus autonome) qui s'excuteront en tache de fond grce au timer GEM. Dans 
ce cas, il faut dfinir et donner une valeur aux constantes suivantes :
GWVA_WIND_THREAD_MAX_THREAD_NR qui est le nombre maximum de 
threads qui tourneront en mme temps  un instant donn. Au moins gal  1.
GWVA_WIND_THREAD_MAX_PRIORITY_LVL : c'est le nombre de priorits 
diffrentes que vous voudrez donner  vos threads et que devra grer le V.A.
et en option :
OPT_GWVA_WIND_THREAD_STATS : pour avoir des statistiques sur les temps 
d'excution des threads.
OPT_GWVA_WIND_THREAD_REAL_TIME : si vous avez des processus criti-
ques en ressources machines, cela les activera de faon systmatique.

. MDL_MENU si vous voulez un menu et que le V.A. reoive et traite les messages 
MNU_SELECTED ;  mettre en principe si vous avez un arbre de menu.

. MDL_WIND si vous envisagez d'avoir au moins une fentre !
. GWVA_APP_OBJ_MAX_NUMBER_WIND dfinit le nombre maximum de fe-
ntres crs simultanment. Si votre application ne peut en crer que 4 au maxi-
mum, mettez 4. Pour une application multi-documents, mettez 256 au moins.

Dans le cas o vous avez MDL_WIND, vous pouvez indiquer en plus au moins un de 
ces modules :
. MDL_GWVA_WIND_CLONING	: permet d'accder  des fonctions de clonage 
des fentres - voir le paragraphe 9.2.3
. MDL_WIND_MENU		: si vous dsirez avoir des menus dans vos fentres
. OPT_GWVA_WIND_MENU_TIMER permet d'tre averti des vnements TI-
MER mme lorsque le menu dans une fentre est "ouvert".
. MDL_WIND_TOOLBAR	: si vous dsirez avoir une toolbar dans vos fentres
. MDL_WIND_CUSTOM		: si vous dsirez des fentres custom (sans redraw 
gr par le V.A.)
. MDL_WIND_TEXT 		: si vous voulez des fentres textes
. MDL_WIND_FORM		: si vous voulez des fentres contenant des formulai-
res.
. MDL_MULTIFORM		: si vous dsirez accder au multi-formulaire.
. MDL_WIND_BITMAP		: si vous voulez des fentres contenant du bitmap 
brut.
. OPT_GWVA_WIND_REDRAW_HIDE_MOUSE : cette option permet d'viter 
le clignotement de la souris quand elle se trouve en dehors d'une fentre lors du 
redraw du contenu. Cette option n'est utilise pour le moment que pour les fen-
tres de type bitmap. Un exemple de cette option est donn dans l'application 
DOTS.

Dans le cas o vous avez MDL_WIND_FORM, vous pouvez dfinir en plus :
. OPT_GWVA_MULTIFORM_ALWAYS_UPDATE :  dfinir uniquement dans le 
cas d'un dveloppement multi-formulaire si vous dsirez qu' chaque vnement 
message provenant d'une fentre (WM_TOPPED,...), le bon formulaire et les bonnes 
structures soient recopis systmatiquement dans le ressource par le Visual et dans 
les structures de la fentre.
. PATCH_WIND_FORM_CUSTOM_EDITABLE_TEXT : cette option permet de 
remplacer les appels systmes chargs du traitement des champs ditables par des 
routines du Visual. Les champs ditables dfinis avec la police  'petit' format sont 
alors correctement traits, et les redessins du curseur sont bien raliss. 
. FORM_OBJ_RADIO_BUTTON : pour accder aux objets radio bouton
. FORM_OBJ_POPUP		: pour accder aux objets popup
. FORM_OBJ_PROGRESS	: pour profiter des objets "barre de progression"  
gestion automatique.
. FORM_OBJ_SLIDER		: pour profiter des objets slider avec une gestion au-
tomatique des dplacements.
. FORM_OBJ_CLICK_EQUIV	: pour profiter des objet "clique quivalant"
. OPT_GWVA_WIND_FORM_CUSTOM_OBJECTS	: permet d'ajouter des objets 
graphiques personnels aux objets Visual existants - voir paragraphe 9.4.5.7 pour 
l'implantation de ces objets.


	8.4 Choisir ses librairies

Vous avez une plthore de librairies incorporant toutes les fonctions utiles que l'on rencon-
tre dans les programmes classiques, plus d'autres originales. Utilisez-les au maximum pour 
vous dfaire des contraintes annexes de programmation et pour vous concentrer sur votre pro-
gramme.

. LIB_FILESELECTOR	: librairie permettant de grer facilement le slecteur de fi-
chier.
. LIB_FORMULARY		: librairie permettant de grer des formulaires premptifs.
. LIB_HEXA			: librairie permettant de convertir un registre en chane 
hexa ou l'inverse en sign !
. LIB_DECI			: librairie permettant de convertir un registre en chane d-
cimale ou l'inverse en sign, utile pour rcuprer les champs numriques de votre for-
mulaire !
. LIB_TIME_DATE		: librairie permettant d'avoir la date/l'heure courante en 
chane ASCII formate.
. LIB_GET_FLENGTH		: librairie permettant de connatre la taille d'un fi-
chier en un seul appel.
.LIB_LOAD_FILE_IN_MEM	: librairie permettant de charger un fichier en m-
moire ; l'allocation est automatique et on vous retourne le pointeur !
. LIB_RECURSIVE_FILE_SEARCH	: librairie permettant de faire une recherche r-
cursive de fichier selon un masque (ex.: *.BAK) et de faire un traitement particulier 
pour chaque fichier rencontr (ex..: F_DELETE)
. FLG_INIBE_COLOR 	: librairie permettant de dsactiver les macro color et co-
lor 256
. LIB_PALETTE			: librairie permettant d'avoir une sauvegarde automatique 
des couleurs.
. LIB_RS232			: librairie permettant de grer facilement le port srie/midi 
de votre machine.
. LIB_200HZ			: librairie permettant de se servir du compteur 200Hz.
. LIB_XBRA			: librairie permettant de chercher/d'insrer/d'enlever un 
vecteur XBRA le plus simplement du monde
. LIB_COMPARE_DISK_FREESPACE	: librairie permettant de connatre la place libre 
sur un disque et de la comparer  une valeur donne (pour savoir si on va avoir la place 
d'crire un fichier dont on connat la taille)
. LIB_XHDI			: librairie permettant de faire des appels  un driver XHDI 
ventuellement prsent.
. LIB_XHDI_GETVERSION			ce sont les dfinitions des routines
. LIB_XHDI_INFOPARTITION			XHDI qui vous intressent.
. LIB_XHDI_INQTARGET
. LIB_XHDI_STOP
. LIB_XHDI_READWRITE
. LIB_XHDI_INQDEV2
. LIB_XHDI_GETCAPACITY
. LIB_XHDI_LASTACCESS
. LIB_STIK			: librairie permettant de faire des appels  STiK s'il est l.

	8.5 Les librairies de debug

Ces labels sont  dfinir uniquement en mode de debug de votre application. Ils vous per-
mettront de tracer certains vnements arrivant sur votre application et vos objets.

. OPT_DEBUG_VISUAL_FORM_OBJ_EVNT
Dclarez ce label dans votre .DEF si vous dsirez tre averti des vnements arrivant 
sur les objets de votre formulaire (CLICK, SELECTED ...). Cela se fait par le biais 
d'une boite de dialogue qui bloquera tous les vnements jusqu' ce que vous appuyez 
sur 'Entre'.
Remarque : la taille du code sera augmente tant que cette option sera prsente.
Remarque importante : vous ne serez averti des messages arrivant sur un objet que s'il 
est dans la liste des objets du formulaire (il y sera forcment si vous allez l'utiliser) m-
me si aucun vnement n'est prvu pour lui (exemple : un bouton que l'on a dclar uni-
quement pour avoir son tat facilement sans vouloir tre averti de son enfoncement ou 
de sa remonte)
Remarque 3 : Les objets n'ayant pas de liste de messages car ils ne peuvent recevoir 
qu'un seul type de message (Popup, Radio ...) n'engendreront pas de boite d'alerte de de-
bug (mais  priori c'est moins intressant).
Remarque 4 : Vous aurez besoin de la librairie LIB_DECI

. OPT_DEBUG_VISUAL_WIND_OBJ_EVNT
En dclarant cette option, vous serez averti de tous les messages GEM intressant les fe-
ntres, (WIND_TOP, MOVED ...). C'est  la fois didactique pour comprendre le fonc-
tionnement d'un systme de fentrage d'une faon gnrale, et utile pour l'ordre d'arrive 
des messages pour le programmeur (entre autre visualiser les problmes insolubles du 
WIND_TOP qui arrive avant WIND_UNTOPPED (pour les changements de palette) et 
des redraw fantmes ...)
Remarque : Vous aurez besoin des librairies LIB_DECI et LIB_HEXA

. OPT_DEBUG_VISUAL_SYSTEM_EVNT
Cette option permet de tracer tous les messages qui ne sont pas des messages pour les 
fentres (AP_TERM, MNU_SELECTED ...). Elle fonctionne de la mme faon que les 
2 prcdentes. Si cette option est est prsente en mme temps que la prcdente, alors 
vous aurez un debug de tous les messages systmes !
Remarque : Vous aurez besoin des librairies LIB_DECI et LIB_HEXA
