	8 .	Le fichier .DEF



Ce fichier 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 prpar, 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 direc-
tement sur la taille de votre code gnr, alors choisissez les bien. Par 
consquent, une application destine  fonctionner indiffremment en 
tant qu'accessoire ou en tant que programme, et qui possde une barre de 
menu lorsqu'il est excut en programme, devra tre assemble avec l'op-
tion MDL_MENU.


	8.1 Les dfinitions possibles


GWVA_APP_OBJECT_STACK_SIZE = 1024
GWVA_MAX_PATH_LENGTH = 128

GWVA_APP_DEP_LIB_VERSION = 4
GWVA_APP_DEP_LIB_MAJOR = 0
GWVA_APP_DEP_LIB_MINOR = 42

OPT_DEBUG_VISUAL_SYSTEM_EVNT
OPT_DEBUG_VISUAL_FORM_OBJ_EVNT
OPT_DEBUG_VISUAL_WIND_OBJ_EVNT

MDL_TOS	; |
MDL_GEM	; | exclusif

MDL_RELOCATE_RSC

MDL_EVENTS

MDL_MENU

MDL_WIND
GWVA_APP_OBJ_MAX_NUMBER_WIND = 8

MDL_WIND_CUSTOM
MDL_WIND_TEXT
MDL_WIND_FORM
GWVA_MULTIFORM_ALWAYS_UPDATE
FORM_OBJ_PROGRESS
FORM_OBJ_SLIDER

MDL_WIND_BITMAP

LIB_FILESELECTOR
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


	8.2 Choisir ses modules


Certaines variables doivent absolument tre dfinies, elles sont :
. GWVA_APP_OBJECT_STACK_SIZE	: la taille de la pile
. GWVA_MAX_PATH_LENGTH		: la longueur 
maximum d'un pathname (chemin+nom)
. GWVA_APP_DEP_LIB_VERSION 		: la version des li-
brairies Visual avec lesquelles vous tes compatible. Si ce nu-
mro est diffrent de celui du Visual, votre application est in-
compatible !
. GWVA_APP_DEP_LIB_MAJOR 		: la sous-version 
majeure des librairies Visual avec lesquelles vous tes compati-
ble, si diffrente : incompatibilit mineure qui devra tre rgle 
en consultant le fichier VISUAL40\MISC\VISUAL40.NEW
. GWVA_APP_DEP_LIB_MINOR 		: la sous-version 
mineure des librairies Visual avec lesquelles vous tes compati-
ble, si diffrente alors votre compilation  s'excutera quand m-
me. Lisez le fichier VISUAL40\MISC\VISUAL40.NEW mal-
gr tout.

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

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

. MDL_EVENTS si vous voulez grer les vnements 
(AC_CLOSE, AP_TERM, les redraws ...) ;  priori c'est oui, 
sauf dans le cas o votre programme n'est qu'une suite de botes 
premptives.

. MDL_MENU si vous voulez recevoir des messages 
MNU_SELECTED ;  mettre en principe si vous avez un ar-
bre de menu.

. MDL_WIND si vous envisagez d'avoir au moins une fentre !
. GWVA_APP_OBJ_MAX_NUMBER_WIND dfinit le nom-
bre maximum de fentres cr simultanment. Si votre applica-
tion ne peut en crer que 4 au maximum, mettez 4. Pour une 
application multi-documents, mettez 256 au moins.

Dans le cas o vous avez MDL_WIND, indiquez en plus au moins 
un de ces modules :
. 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 formulaires.
. MDL_WIND_BITMAP		: si vous voulez des fentres 
contenant du bitmap brut.

Dans le cas o vous avez MDL_WIND_FORM, vous pouvez met-
tre en plus :
. GWVA_MULTIFORM_ALWAYS_UPDATE :  dfinir uni-
quement 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 
structure soient recopis systmatiquement dans le ressource 
par le Visual et dans les structures de la fentre.
. FORM_OBJ_PROGRESS	: pour profiter des objets "bar-
re de progression"  gestion automatique.
. FORM_OBJ_SLIDER		: pour profiter des objets slider 
avec une gestion automatique des dplacements.


	8.3 Choisir ses librairies


Vous avez une plthore de librairies incorporant toutes les fonctions 
utiles que l'on rencontre 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 programme.

. LIB_FILESELECTOR		: librairie permettant de grer 
facilement le slecteur de fichier.
. LIB_FORMULARY			: librairie permettant de grer 
des formulaires premptifs.
. LIB_HEXA				: librairie permettant de con-
vertir un registre en chane hexa ou l'inverse en sign !
. LIB_DECI				: librairie permettant de con-
vertir un registre en chane dcimale ou l'inverse en sign, utile 
pour rcuprer les champs numriques de votre formulaire !
. LIB_TIME_DATE			: librairie permettant d'avoir la 
date/l'heure courante en chane ASCII formate.
. LIB_GET_FLENGTH			: librairie permettant de con-
natre la taille d'un fichier en un seul appel.
.LIB_LOAD_FILE_IN_MEM	: librairie permettant de char-
ger un fichier en mmoire ; l'allocation est automatique et on vous 
retourne le pointeur !
. LIB_RECURSIVE_FILE_SEARCH	: librairie permettant de 
faire une recherche rcursive de fichier selon un masque (ex.: 
*.BAK) et de faire un traitement particulier pour chaque fichier 
rencontr (ex..: F_DELETE)
. FLG_INIBE_COLOR			: flag permettant de dsactiver 
les macros color et color256.
. 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 ser-
vir du compteur 200Hz.
. LIB_XBRA				: librairie permettant de cher-
cher/d'insrer/d'enlever un vecteur XBRA le plus simplement du 
monde
. 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


	8.4 Les librairies de dbug


Ces labels sont  dfinir uniquement en mode de debug de votre appli-
cation. Ils vous permettront de tracer certains vnements arrivant sur vo-
tre 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 ayez appuy 
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) mme 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 dbug. (Mais  priori c'est 
moins intressant)
Remarque 4 : Vous aurez besoin de la librairie LIB_DECI

. OPT_DEBUG_VISUAL_WIND_OBJ_EVNT
Dclarant cette option, vous serez averti de tous les messages 
GEM intressant les fentres, (WIND_TOP, MOVED ...). C'est  
la fois didactique pour comprendre le fonctionnement d'un syst-
me de fentrage d'une faon gnrale, et utile pour l'ordre d'arri-
ve des messages pour le programmeur (entre autre visualiser les 
problmes insoluble du WIND_TOP qui arrive avant 
WIND_UNTOPPED (pour les changements de palette) et des re-
draw 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, et si elle 
est est prsente en mme temps que la prcdente, alors vous au-
rez un debug de tous les messages systmes !
Remarque : Vous aurez besoin des librairies LIB_DECI et 
LIB_HEXA

