	9 .	Le fichier objet du V.A. (.OBJ)



Aprs avoir cr votre ressource, et votre projet.HS, vient le temps 
d'attaquer le fichier projet.OBJ. Ce fichier est l'interface entre le ressour-
ce graphique et vos routines vnementielles. Ce fichier ne contient au-
cun code, uniquement du DATA. De mme que le projet.DEF, il ne de-
vrait, en principe, pas changer une fois cr jusqu' la fin du projet ; mais 
ds que vous ajouterez un objet ou un vnement, vous serez amen  le 
modifier. Comme il contient beaucoup d'objets de diffrents types, on 
laisse en principe un commentaire sur chaque ligne, correspondant  la 
fin du nom de la structure. Faites du copier/coller depuis des applications 
qui contiennent dj l'objet que vous dsirez crer pour que ce soit plus 
simple au dbut.

exemple :

window_main_specs:	dc.w FORM_MAIN		; FORM_IDX
			dc.l 0				; FORM_PTR
			dc.l 0				; CLICK_ROUTINE
			dc.w TEXTE_TIMER		; FOCUSED_TXT
			dcb.w 7,0				; CURSOR_POS, L_SCULPT, 
T_SCULPT, R_SCULPT, 
								; B_SCULPT, W_SCULPT, 
H_SCULPT
			dc.w 0				; IS_CLONE_FORM
			dc.l 0				; CLONE_FORM_SAVE
			dc.l 0				; CLONE_MAIN_PTR

			dc.w BTON_PARK_NOW	; obj idx
			dc.w $08*256+'p'		; shortcut(0=no)
			dc.w 2				; 1:txt 2:bton 3:pop 4:radio
			dc.l struct_bton_park		; ptr struct

			dc.w -1

struct_bton_park:	dc.w 0				; STATE
			dc.w GWVA_EVNT_CLICK	; START_EVNT_LIST
			dc.l bton_park_now_clicked
			dc.w -1


	9.1 L'objet "application principale"


Cet objet reprsente votre application, ses proprits, ses vnements.
Voyons les proprits en question :


		9.1.1 Les proprits de l'objet


GWVA_APP_OBJ_FLAGS:						1 octet
	bit 0 : (0) le ressource doit tre charg, (1) il est en mmoire (si 1, n'ou-
bliez pas :
		MDL_RELOCATE_RSC)
	bit 1 : (0) un seul ressource (1) liste de ressources en fonction de la r-
solution.
		(cf. GWVA_APP_OBJ_RSC_INFO)
	bit 2 : (0) pas de background (1) image de fond si APP
		(cf. GWVA_APP_OBJ_BACKGROUND_OBJ)
	bit 3 : (0) background normal (1) centrage auto dans l'cran de l'objet 
n1 de l'arbre spcifi.

GWVA_APP_OBJ_STATUS:					1 octet
	(en lecture uniquement pour le programmeur)
	bit 0 : (0) application non iconifie (1) iconifie
	bits 1-7 : rservs (0)

GWVA_APP_OBJ_TSR_SIZE:					1 mot 
long
	longueur  sauvegarder (page de base y compris) pour les TSR, 0.L si 
pas TSR

GWVA_APP_OBJ_REG_NAME:					1 mot 
long
	pointeur sur le nom pour le MENU_REGISTER (REG_NEWNAME).
	La chane doit toujours comport 8 caractres ( complter avec des 
espaces si besoin est) et doit tre termine par un 0.

GWVA_APP_OBJ_ACC_NAME:					1 mot 
long
	pointeur sur le nom pour le MENU_REGISTER (termin par un 0)

GWVA_APP_OBJ_RSC_INFO:					1 mot 
long
	pointeur soit sur le pathname (si sur disque) soit sur l'adresse du res-
source (si en mmoire) ou 0.L si pas de ressource.
Si le bit de GWVA_APP_OBJ_FLAGS dfinissant un ressource par 
rsolution est mis, alors c'est un pointeur sur un tableau de 5 pointeurs en 
fonction de la rsolution (2, 4, 16, 256, pas de palette). Les pointeur sont 
soit des pathnames soit des adresses (si  ressources en mmoire)

GWVA_APP_OBJ_BACKGROUND_OBJ:			1 mot
	index l'arbre objet  mettre en fond si APP (la taille du pre (objet 0) 
sera ajuste  la taille du bureau)

GWVA_APP_OBJ_MAIN_MENU_PTR:			1 mot 
long
	0.L si pas de menu ou 1 pointeur sur une structure menu 
(GWVA_MENU_STRUCT)

La structure d'un menu est la suivante (c'est la mme que pour un me-
nu attach dans une fentre) :
	Dans le cas de sous-menus attachs, les attachements sont effectus 
par le V.A au dbut du programme.

GWVA_MENU_STRUCT_INDEX:				1 mot
	index de l'arbre du menu dans le ressource

GWVA_MENU_STRUCT_PTR:					1 mot 
long
	pointeur sur l'arbre du menu dans le ressource (calcul par le V.A)

GWVA_MENU_STRUCT_SCROLL_INDEX:		1 mot
	numro du top menu le plus  gauche (-1 pour tout)
	Pour le moment, mettez la valeur -1 !

GWVA_MENU_STRUCT_LIST_ATTACH_PTR:		1 mot 
long
	0.L si aucun sous menu
	ou, dans le cas contraire, 1 pointeur sur un tableau de pointeurs sur des 
structures GWVA_SUB_MENU, termin par 0.L.

GWVA_MENU_STRUCT_START_LIST:
	dbut de la liste des index de menus et leurs routines correspondantes  
excuter en cas de slection ; la liste est ainsi constitue :

	GWVA_MENU_OBJ_DEF_OBJ_NUM:		1 mot
		numro du menu
	GWVA_MENU_OBJ_DEF_OBJ_SHORTCUT:	1 mot
		le raccourci clavier ventuel (0 si pas) constitu de 
			1 octet pour le masque de bits des touches spciales
				rappel :  bit 0=Rshift, bit 1=Lshift, bit 2=Ctrl, bit 
3=Alt
			1 octet pour le scancode US !!! Il sera converti en langue 
locale
			Si code ascii, ne pas mettre de ctrl ni alt ...
			Si scancode sans valeur ascii, ajouter $80 au 2me octet.
			Tout raccourci utilisant Alt et une touche strictement  
droite
			de la touche [8 !] ne marchera pas partout
			Ainsi :
				CTRL+I	donne : dc.b 0,'i'-'a'+1
				ALT + I	donne : dc.b $8,'a'
				F1	donne : dc.b 0,$80+$3B
	GWVA_MENU_OBJ_DEF_OBJ_PTR:		1 mot long
		pointeur sur votre routine associe
	GWVA_MENU_SHORCUT_STRUCT_LENGTH:
		ce label donne la taille de la structure = 8 octets

	1 mot =-1  la fin de la liste

	La structure d'un sous-menu est la suivante :

	GWVA_SUB_MENU_TREE_OBJ_ATTACHED:	1 mot
		arbre menu contenant le menu auquel on veut attacher un sous 
menu

	GWVA_SUB_MENU_OBJ_IDX_ATTACHED:		1 mot
		index du menu auquel on va attacher un sous menu

	GWVA_SUB_MENU_TREE:					1 mot
		index de l'arbre qui contient le dessin du sous menu

	GWVA_SUB_MENU_INDEX:					1 mot
		index du dessin pre dans le ressource

	GWVA_SUB_MENU_WHICH_ALIGN:			1 mot
		quel fils du pre ci-dessus doit tre align avec le menu de d-
part

	GWVA_SUB_MENU_SCROLL:				1 mot
		le menu est-il scrollable ? (0) non (1) oui

	GWVA_SUB_MENU_STRUCT_START_LIST:
		cf. GWVA_MENU_STRUCT_START_LIST plus haut.


GWVA_APP_OBJ_ALL_ICON_PTR:				1 mot 
long
	pointeur sur une structure de fentre reprsentant l'application iconi-
fie.
	Pas implant : 0.L

	Viennent ensuite les paramtres pour la boucle EVNT_MULTI prin-
cipale :
	N.B : ces paramtres gnrent des vnements.

GWVA_APP_OBJ_M1FLAG:					1 mot
	entre  (0) ou sortie (1) de la zone 1
GWVA_APP_OBJ_M1X:						1 mot
	position de la zone 1 : x,y
GWVA_APP_OBJ_M1Y:						1 mot
GWVA_APP_OBJ_M1W:						1 mot
	taille de la zone 1 : largeur, hauteur (0.L pour pas d'vnement)
GWVA_APP_OBJ_M1H:						1 mot

GWVA_APP_OBJ_M2FLAG:					1 mot
	entre (0) ou sortie (1) de la zone 2
GWVA_APP_OBJ_M2X:						1 mot
	position de la zone 2 : x,y
GWVA_APP_OBJ_M2Y:						1 mot
GWVA_APP_OBJ_M2W:						1 mot
	taille de la zone 2 : largeur, hauteur (0.L pour pas d'vnement)
GWVA_APP_OBJ_M2H:						1 mot

GWVA_APP_OBJ_COUNT:						1 mot 
long
	valeur du timer en milli-secondes , si 0.L : inactif !


		9.1.2 Les vnements


Les vnements relatifs  l'objet application principale dcoulent de 
l'EVNT_MULTI, donc des proprits de votre objet application (zone1, 
souris, zone2, timer) mais aussi du fait que vous ayez ou non des fentres 
(EVNT_BUTTON) ou des menus (EVNT_MENU). Enfin les messa-
ges systmes arrivent aussi ici (AP_TERM...).

GWVA_APP_OBJ_CUSTOM_INITS:				1 mot 
long
	pointeur sur une ventuelle initialisation personnelle avant la boucle 
GEM principale d'attente

	Pour tous les messages qui vont suivre (jusqu' 
GWVA_APP_OBJ_ALL_OTHER ), les paramtres passes aux routines 
associes sont :
	d0.w	:	numro du message (mot 0 du buffer de message)
	a0.l	:	pointeur sur le buffer de message (16 octets)
	a1.l	:	pointeur sur le buffer tendu : 256 octets au maximum.

GWVA_APP_OBJ_AC_OPEN:					1 mot 
long
	vnement ouverture d'accessoire ;  ce stade la station de travail vir-
tuelle est ouverte.

GWVA_APP_OBJ_AC_CLOSE:					1 mot 
long
	vnement fermeture d'accessoire ; la station de travail virtuelle sera 
ferme par le V.A la routine associe .ce pointeur.

GWVA_APP_OBJ_AP_TERM:					1 mot 
long
	dans d1.w on retrouve le 5me mot du buffer de message (la cause de 
l'AP_TERM)

GWVA_APP_OBJ_AP_TFAIL:					1 mot 
long
	aucun paramtre supplmentaire

GWVA_APP_OBJ_SHUT_COMPLETED:			1 mot 
long
	aucun paramtre supplmentaire

GWVA_APP_OBJ_RESCH_COMPLETED:			1 mot 
long
	aucun paramtre supplmentaire

GWVA_APP_OBJ_AP_DRAG_DROP:				1 mot 
long
	aucun paramtre supplmentaire

GWVA_APP_OBJ_SH_WDRAW:					1 mot 
long
	aucun paramtre supplmentaire

GWVA_APP_OBJ_CH_EXIT:					1 mot 
long
	aucun paramtre supplmentaire

GWVA_APP_OBJ_ALL_OTHER:					1 mot 
long
	tout message ayant un numro non reconnu dans l'un de ceux qui pr-
cdent sera dirig ici. Entre autre le message VA_START.

	Voici la liste des messages gnrs par l'EVNT_MULTI :

GWVA_APP_OBJ_EVNT_KEYBD:				1 mot 
long
	Notez que si la touche arrive jusqu'ici c'est qu'elle n'a t intercepte ni 
par un raccourci menu, ni par un raccourci d'un formulaire dclenchant 
une action.
	d0.w	= code clavier ; octet haut = scancode, octet bas = code ASCII 
ventuelle
	a0.l	= pointeur fentre sous la souris ou 0.L si aucune ou pas  
nous.

GWVA_APP_OBJ_EVNT_BUTTON:				1 mot 
long
	Notez que si le click arrive jusqu'ici, c'est qu'il n'a t intercept ni par 
un menu, ni par un click dans un objet d'un formulaire dclenchant une 
action, ni par une routine de click associ  une fentre.
	d0.w	= handle GEM de la fentre sous la souris trouv par la fonc-
tion WIND_FIND
	d1.w & d2.w : x,y du click souris
	d3.w	= bouton ayant entrain le click (gauche, droit, milieu ...)
	d4.w	= nombre  de click(s)
	a0.l	= pointeur sur l'objet application.

	GWVA_APP_OBJ_EVNT_MOUSE1:				1 mot 
long
&	GWVA_APP_OBJ_EVNT_MOUSE2:				1 mot 
long
	d0.w & d1.w : x,y de la souris
	d2.w	= tat des boutons
	d3.w	= nombre de clicks ventuels
	a0.l	= pointeur sur l'objet application.

GWVA_APP_OBJ_EVNT_TIMER:				1 mot 
long
	aucun paramtre supplmentaire

Vous recevrez en plus, via vos dclarations de menus et de raccourcis 
claviers, des vnements menus ; les registres seront alors :
	d0.w	= top menu slectionn
	d1.w	= index de l'item slectionne
	d2.w	= index du menu
	a0.l	= adresse de l'arbre

Remarque : le menu sera automatiquement repass en vido normale  
la fin de votre routine.


		9.1.3 Les mthodes


VISUAL40_START:
	Ce label ne devrait pas vous servir sauf pour dbugger les routines 
d'initialisation du Visual,ce qui n'est pas votre rle ... sauf pour voir com-
ment on fait.

GWVA_MAIN_EVENTS_LOOP:
	Ce label ne devrait pas vous servir sauf pour dbugger les routines 
d'appel EVNT_MULTI du Visual, ce qui n'est pas votre rle ... sauf 
pour voir comment on fait.

GWVA_APP_OBJ_PRG_EVNT_TIMER:
	Ce label ne devrait pas vous servir sauf pour dbugger les routines de 
traitement en retour des messages EVNT_TIMER en retour de l'appel 
EVNT_MULTI du Visual, ce qui n'est pas votre rle ... sauf pour voir 
comment on fait.

GWVA_APP_OBJ_PRG_EVNT_KEYBOARD:
	Ce label ne devrait pas vous servir sauf pour dbugger les routines de 
traitement en retour des messages EVNT_KEYBOARD en retour de 
l'appel EVNT_MULTI du Visual, ce qui n'est pas votre rle ... sauf 
pour voir comment on fait.

GWVA_WIND_OBJ_PRG_SEARCH_EVNT:
	d0.w	= n objet,
	d7.w	= vnement,
	a2.l	= pointeur liste
	Label Interne

GWVA_APP_OBJ_PRG_EVNT_BUTTON:
	Ce label ne devrait pas vous servir sauf pour dbugger les routines de 
traitement en retour des messages EVNT_BUTTON en retour de l'appel 
EVNT_MULTI du Visual, ce qui n'est pas votre rle ... sauf pour voir 
comment on fait.

GWVA_APP_OBJ_PRG_EVNT_MOUSE1:
	Ce label ne devrait pas vous servir sauf pour dbugger les routines de 
traitement en retour des messages EVNT_MOUSE1 en retour de l'appel 
EVNT_MULTI du Visual, ce qui n'est pas votre rle ... sauf pour voir 
comment on fait.

GWVA_APP_OBJ_PRG_EVNT_MOUSE2:
	Ce label ne devrait pas vous servir sauf pour dbugger les routines de 
traitement en retour des messages EVNT_MOUSE2 en retour de l'appel 
EVNT_MULTI du Visual, ce qui n'est pas votre rle ... sauf pour voir 
comment on fait.

GWVA_APP_OBJ_PRG_EVNT_MESSAGE:
	Ce label ne devrait pas vous servir sauf pour dbugger les routines de 
traitement en retour des messages EVNT_MESSAGE en retour de l'ap-
pel EVNT_MULTI du Visual, ce qui n'est pas votre rle ... sauf pour 
voir comment on fait.

GWVA_APP_OBJ_PRG_CLEAR_EVNT_BIT:
	Label Interne

GWVA_CONVERT_KC_IN_OBJECT_IDX:
	d0.w	= KC (scan code + ascii)
	a0.l	= adresse 1er objet dans la table de comparaison
	d1.w	= longeur de la structure
		Donc si l'ikbd.bas est non nul on se fiche du shift car il est dj 
compris dans le code : ex. ctrl+4=shift/ctrl+' <> ctrl+'
		Donc vitez ctrl ou alt + touches qui varient avec le shift selon 
les pays autres que A-Z
	Label Interne

GWVA_EXEC_MENU_ROUTINE_FROM_KC:
	a0.l	= pointeur sur une structure GWVA_MENU_STRUCT
	d0.w	= KC
	d1.w	= taille de la table de recherche (CONVERT_KC_IN_OB-
JECT_IDX)
	Label Interne

GWVA_EXEC_MENU_ROUTINE_FROM_ME-
NU_AD_AND_IDX:
	a0.l	= pointeur sur une structure GWVA_MENU_STRUCT
	d0.w	= Index du menu
	d1.l	= Adresse de l'arbre contenant le menu
	Label Interne

GWVA_EXEC_MENU_ROUTINE_FROM_MENU_IDX:
	a0.l	= pointeur sur une structure _STRUCT_START_LIST
	d0.w	= Index du menu
	Label Interne

GWVA_INFINITE_LOOP:
	Vous devez sauter dans cette routine quand vous tes en situation de 
plantage (votre programme ne peut plus fonctionner correctement) et que 
vous ne voulez pas sortir pour une raison quelconque ou bien si vous tes 
en accessoire (vous ne devez jamais sortir dans ce cas). Votre pro-
gramme ne continuera plus, mais laissera les autres programmes fonc-
tionner correctement.

GWVA_APP_OBJ_PRG_WAIT_EVENTS:
	Cette routine permet d'attendre un temps minimum avant de continuer 
un programme, sans bloquer les autres processus :
	Entre		d0.l : timer en 1/1000me de secondes
	Si d0 = 2000 alors la main vous sera rendue aprs 2 secondes mini-
mum, cela peut trs bien tre 4 secondes si beaucoup de processus sont 
en train de travailler  ce moment.

VISUAL40_END:
	Vous sauterez  ce label quand vous dsirerez quitter et retourner au 
bureau. Tout sera ferm correctement mais librez vous-mme les res-
sources (vecteurs, interruptions ...) que vous aurez dtournes.

GWVA_APP_RSC_LOAD_FAILED:
	Label Interne

GWVA_BRANCH_IF_OPEN_WORKSTATION_FAILED:
	Label Interne

GWVA_BRANCH_IF_APPL_INIT_FAILED:
	Label Interne

GWVA_APP_OBJ_PRG_ACC_OPEN_VSTATION:
	Label Interne

GWVA_APP_OBJ_PRG_ACC_CLOSE_VSTATION:
	Label Interne

GWVA_APP_OBJ_PRG_OPEN_VSTATION:
	Label Interne

GWVA_APP_OBJ_PRG_CLOSE_VSTATION:
	Uniquement pour les accessoires
	Label Interne

GWVA_OPEN_WORKSTATION_FAILED:
	Label Interne

GWVA_APPL_INIT_FAILED:
	Label Interne


	9.2 L'objet "fentre"


L'objet fentre est  la base du concept Visual Assembleur. Il vous per-
met d'afficher et d'interagir avec l'oprateur dans les rgles du systme.
Cette objet est constitu d'une liste de proprits de base communes  
toutes le fentres (sliders, titre ...) et d'un pointeur ventuel sur une struc-
ture dcrivant son contenu Visual et comment le traiter (fentre bitmap 
par exemple : nombre de couleurs ...)
	Il possde enfin une liste d'vnements que vous aurez dclars com-
me vous intressant plus particulirement, et auxquels vous aurez assign 
des routines (par exemple tre averti d'une demande de redimensionne-
ment pour l'ajuster  un critre spcial ...)


		9.2.1 Les proprits de base


GWVA_WIND_OBJ_FLAGS:					1 mot
	Ce sont les bits de proprit, les mmes que le GEM.
	0 : name
	1 : close
	2 : full
	3 : move
	4 : info
	5 : size
	6 : up arrow		 7 : down arrow		 8 : vertical slide
	9 : left arrow		10 : right arrow		11 : horizontal slide
	14 : smaller (iconification)

GWVA_WIND_OBJ_STATUS:					1 mot
	Ce sont les bits de status, modifis par le V.A au cours de l'excution
	0 : GWVA_WIN_BIT_FULL		: 1=fulled
	1 : GWVA_WIN_BIT_OPEN		: 0=ferme, 1=ouverte
	2 : GWVA_WIN_BIT_CURS		: 1=curseur du champ ditable 
affich
	3 : GWVA_WIN_BIT_ICON		: 1=iconifie
	4 : GWVA_WIN_NAMIFIED		: 1=fentre rduite  un titre (et 
une info)
	5 : Reserv, doit tre 0
	6 : Reserv, doit tre 0
	7 : Reserv, doit tre 0
	8-15 : libre pour le concepteur

GWVA_WIND_OBJ_PROPERTIES:				1 mot
	Ce sont les bits de proprit, fixs par vous, concepteur
	0 : GWVA_WIN_BIT_ATOOLBAR	: 1=la fentre contient une tool-
bar
	1 : GWVA_WIN_BIT_AMENU	: 1=la fentre contient un menu
	2 : GWVA_WIN_BIT_CTRLC	: 1=supporte CTRL+C (Non im-
plant)
	3 : GWVA_WIN_BIT_CTRLV	: 1=supporte CTRL+V (Non im-
plant)
	4 : GWVA_WIN_BIT_CTRLX	: 1=supporte CTRL+X (Non im-
plant)
	5 : Rserv, doit tre 0
	6 : Rserv, doit tre 0
	7 : Rserv, doit tre 0
	8 : GWVA_WIN_BIT_COPYXY	: 1=copie automatique des x,y 
dans FIRST_X,Y
							quand elle est ferme
	9 : GWVA_WIN_BIT_AUTODEL	: 1=dtruit automatiquement la 
fentre quand 
							elle est ferme
	10 : GWVA_WIN_BIT_FREEPTR1	: 1=libre automatiquement 
USER_PTR1 en tant 
							que MALLOC quand la fentre 
est dtruite
	11 : GWVA_WIN_BIT_FREEPTR2	: 1=libre automatiquement 
USER_PTR2 en tant
							que MALLOC quand la fentre 
est dtruite
	12 : GWVA_WIN_BIT_FREEDATA: 1=libre automatiquement 
DATA_PTR en tant 
							que MALLOC quand la fentre 
bitmap est dtruite
	13 : GWVA_WIN_BIT_FREEPAL	: 1=libre automatiquement 
PAL_PTR en tant que
							MALLOC quand la fentre bit-
map est dtruite
	14 : GWVA_WIN_BIT_FREEFORM : 1= libre automatiquement 
							CLONE_FORM_SAVE en tant 
que MALLOC quand
							la fentre FORM est dtruite
	15 : GWVA_WIN_BIT_FREETOOL : 1= libre automatiquement  
CLONE_FORM_SAVE
							(structure toolbar) en tant que 
MALLOC quand la fentre 							conte-
nant une toolbar clone est dtruite.

GWVA_WIND_OBJ_TOPABLE_STATE:			1 mot
	Initialis  0.
	Incrment pour rendre votre fentre "non-toppable", dcrment pour 
lui rendre son tat original.
	Dcrment pour rendre votre fentre "non-dtoppable", incrment 
pour lui rendre son tat original.
	Ce smaphore peut donc tre utilis par plusieurs routines, agissant sur 
le mme fentre, sans blocage sachant que l'on ne peut vouloir qu'une fe-
ntre soit "non-toppable" et "non-dtoppable" en mme temps.

GWVA_WIND_OBJ_NAME:					1 mot 
long
	pointeur sur une chane termine par 0 donnant le titre de la fentre ou 
bien 0.L

GWVA_WIND_OBJ_INFO:						1 mot 
long
	pointeur sur une chane termine par 0 donnant l'info de la fentre ou 
bien 0.L

GWVA_WIND_OBJ_ICON_WIND_PTR:			1 mot 
long
	0.L ou un pointeur sur une structure fentre dcrivant la fentre iconi-
fie. Le type de la fentre associe doit tre soit du type formulaire soit 
du type custom. La taille de la fentre iconifie sera calcule par le syst-
me. Ce type de fentre ne doit comporter comme gadget que la barre de 
nom.
ATTENTION : pour toute modification du contenu de la fentre iconi-
fie par les routines Visual Assembleur (TOP_ONE_WIND, ...), vous 
devez passer le pointeur de la fentre normale, c'est  dire non-iconifie, 
SAUF pour la routine REDRAW_PART (cf. mthodes) pour laquelle il 
faut passer la structure de la fentre sur laquelle vous voulez effective-
ment faire le redraw (donc il faut tester son tat avant d'envoyer le re-
draw, ou alors vous prenez le risque que votre redraw ne soit pas envoy 
si le V.A dtecte qu'elle est iconifie. On en redessine pas une fentre si 
elle n'est pas visible dans son tat normal (i.e : namifie ou iconifie)!)

GWVA_WIND_OBJ_TOOLBAR_SPEC_PTR:		1 mot 
long
	0.L ou pointeur sur l'objet toolbar : mme structure qu'un formulaire.

GWVA_WIND_OBJ_TOOLBAR_HEIGHT:			1 mot
	hauteur de la toolbar (calcul par le V.A) 0.w si aucune.

GWVA_WIND_OBJ_MENU_SPEC_PTR:			1 mot 
long
	0.L ou pointeur sur un objet menu (GWVA_MENU_STRUCT).

GWVA_WIND_OBJ_MENU_HEIGHT:				1 mot
	hauteur du menu (calcul par le V.A) 0.w si aucun.

GWVA_WIND_OBJ_KEY_TABLE:				1 mot 
long
	pointeur sur une table de touches et de routines associes pour cette fe-
ntre prcisment. Voici le format de la table :
	GWVA_WIND_OBJ_KEYTABLE_TYPE:			1 mot
		type de raccourci : -1=fin de liste, 0=raccourci normal, 
1=ctrl+C, 2=ctrl+V, 3=ctrl+X.
	GWVA_WIND_OBJ_KEYTABLE_SHORTCUT:	1 mot
		le raccourci (cf. cration des raccourcis menus)
	GWVA_WIND_OBJ_KEYTABLE_PTR:			1 mot 
long
		 le pointeur sur votre routine.
	GWVA_WIND_KEY_STRUCT_LENGTH:	
		taille de la structure = 8 octets

	
GWVA_WIND_OBJ_FIRST_X:					1 mot
	premire coordonne x externe de la fentre (-1 pour centrer) non mo-
difi par V.A

GWVA_WIND_OBJ_FIRST_Y:					1 mot
	premire coordonne y externe de la fentre (-1 pour centrer) non mo-
difi par V.A

GWVA_WIND_OBJ_FIRST_W:					1 mot
	premire largeur interne de la fentre non modifi par V.A en unit de 
la fentre (pixels ou caractres)

GWVA_WIND_OBJ_FIRST_H:					1 mot
	premire hauteur interne de la fentre non modifi par V.A en unit de 
la fentre (pixels ou caractres)
	Attention : il y a une taille minimale  respecter pour une fentre sans 
quoi le GEM va vous changer la taille  la premire opration sur la fen-
tre sans vous en avertir ~64*64 pixels

GWVA_WIND_OBJ_INTERNAL_MAX_W:			1 mot
	largeur maximale interne en unit de la fentre (pixels ou caractres) 
pour un resize ou full. Si c'est une fentre bitmap, cette taille est fixe par 
la taille de l'image.

GWVA_WIND_OBJ_INTERNAL_MAX_H:			1 mot
	hauteur maximale interne en unit de la fentre (pixels ou caractres) 
pour un resize ou full . Si c'est une fentre bitmap, cette taille est fixe 
par la taille de l'image. Si c'est une fentre text, cette taille est fixe par 
NB_COL, NB_LIGNE : elle sera recalcul en pixel par le V.A..
	Attention : le hauteur de la toolbar n'est pas  prendre en compte.
	Attention : tout sera de toute faon vrifis  l'initialisation de la fen-
tre (taille infrieur  celle du bureau et position dans le bureau).

GWVA_WIND_OBJ_GEM_HANDLE:				1 mot
	handle GEM. Mettre -1 au dbut !
	S'il y a -1 ici c'est que la fentre n'a pas encore t cre.
ATTENTION : une fentre iconifie a le mme handle GEM que la fe-
ntre normale.

	Les variables suivantes sont en lecture uniquement (mettez 0 au dbut) 
:
GWVA_WIND_OBJ_EXTERNAL_X:				1 mot
GWVA_WIND_OBJ_EXTERNAL_Y:				1 mot
GWVA_WIND_OBJ_EXTERNAL_W:				1 mot
GWVA_WIND_OBJ_EXTERNAL_H:				1 mot
	GWVA_WIND_OBJ_INTERNAL_X:				1 mot
&	GWVA_WIND_OBJ_INTERNAL_Y:				1 mot
	ces deux variables donnent la position du premier pixel utile de la fe-
ntre en tenant compte d'un ventuel menu ou toolbar !
GWVA_WIND_OBJ_INTERNAL_W:				1 mot
GWVA_WIND_OBJ_INTERNAL_H:				1 mot
	idem que ci-dessus pour largeur et hauteur
GWVA_WIND_OBJ_EXTERNAL_MAX_W:		1 mot
GWVA_WIND_OBJ_EXTERNAL_MAX_H:			1 mot

GWVA_WIND_OBJ_SLIDER_V_POS:				1 mot
	position verticale du slider de 1  1000
GWVA_WIND_OBJ_SLIDER_V_SIZE:			1 mot
	taille verticale du slider de 1  1000 (-1 : taille minimale)
GWVA_WIND_OBJ_SLIDER_H_POS:				1 mot
	position horizontale du slider de 1  1000
GWVA_WIND_OBJ_SLIDER_H_SIZE:			1 mot
	taille horizontale du slider de 1  1000 (-1 : taille minimale)

GWVA_WIND_OBJ_TYPE:						1 mot
	1 : GWVA_WIND_TYPE_CUSTOM : fentre custom sans rien  l'in-
trieur, juste les
	     bords,
	2 : GWVA_WIND_TYPE_TEXT : fentre pour afficher du texte,
	3 : GWVA_WIND_TYPE_FORM : fentre contenant un formulaire,
	4 : GWVA_WIND_TYPE_BITMAP : fentre contenant du une ima-
ge.

	Pour une fentre contenant une toolbox, faites un formulaire.

GWVA_WIND_OBJ_SPEC_PTR:					1 mot 
long
	pointeur sur une structure spcifique en fonction du type de fentre.

GWVA_WIND_OBJ_USER_PTR1:				1 mot 
long
	pointeurs 1 pour usage du programmeur.
GWVA_WIND_OBJ_USER_PTR2:				1 mot 
long
	pointeurs 2 pour usage du programmeur.

GWVA_WIND_OBJ_START_EVNT_LIST:
	suit la liste des vnements dont souhaite tre averti l'utilisateur. Elle 
est constitue d'un mot pour le numro du message, incrment soit de 
WM_BEFORE soit de WM_AFTER (sauf pour 
WM_GWVA_NEWIND) puis d'un pointeur sur une routine. Mettez -1.w  la fin de la liste.
	ex. :	dc.w WM_CLOSED+WM_BEFORE
		dc.l fenetre_fermee (l'utilisateur renverra d7=-1 pour empcher 
l'action)
		dc.w -1


		9.2.2 Les mthodes


GWVA_WIND_OBJ_PRG_RETURN_PTR_FROM_HANDLE:
	Entre		d0.w	= handle de la fentre 
	Sortie		a0.l	= pointeur sur la structure Visual de la fentre
			d7.w	= code d'erreur ventuelle ou 0

	Retourne un pointeur sur la structure Visual de la fentre dont le hand-
le est donn en entre.
	d7.w vaut zro en retour si pas d'erreur.

GWVA_WIND_OBJ_PRG_TEST_IF_WIND_CREATED:
	Entre		a0.l	= pointeur sur une structure de fentre Visual
	Sortie		d7.w	= 0 si la fentre est dj cre

	Test si une fentre Visual a dj t cre.

GWVA_WIND_OBJ_PRG_TEST_IF_WIND_OPENED:
	Entre		a0.l	= pointeur sur une structure de fentre Visual
	Sortie		d7.w	= 0 si la fentre est ouverte

	Test si une fentre Visual est ouverte  l'instant prsent.

GWVA_WIND_OBJ_PRG_TEST_IF_WIND_NOT_ICONI-
FIED:
	Entre		a0.l	= pointeur sur une structure de fentre Visual,
	Sortie		d7.w	= 0 si le fentre n'est pas iconifie.

	Test si une fentre Visual est iconifie  l'instant prsent.

GWVA_WIND_OBJ_PRG_RETURN_TOP_WINDOW:
	Entre	
	Sortie		a0.l	= pointeur structure fentre Visual
			d0.w	= handle GEM de la fentre
			d7.w	= 0 si la fentre TOP est une fentre GEM

	Dtermine quelle est la fentre TOP, et si c'est une fentre Visual.

GWVA_FORM_WIND_OBJ_PRG_REDRAW_PART:
	Entre		a0.l	= pointeur structure fentre Visual non iconifie !
			a1.l	= pointeur d'une liste objet /profondeur si d2.w = 3
			d0.w	= numro de l'objet (0 pour tout)
			d1.w	= profondeur du redraw (7 pour tout)
			d2.w =	.-1= toute la fentre,
					. 0= contenu,
					. 1= toolbar,
					. 2= menu,
					. 3= a1.l pointe sur une liste d'objet/profon-
deur termine par  -1

	Cette fonction permet de re-dessiner tout ou partie du formulaire con-
tenue dans une fentre.
Dans a0.l vous aurez soin de passer un pointeur sur une fentre NON ico-
nifie sinon il n'y aura pas de redraw. Si vous voulez re-dessiner une fe-
ntre iconifie, alors passez dans a0 le pointeur sur la structure de fentre 
iconifie : c'est aussi simple que a.
	d0.w est le numro de l'objet du pre des objets  re-dessiner et d1.w 
donne la profondeur (le nombre de niveau de fils) du redraw. Le couple 
(0,7) permet de re-dessiner tout le formulaire  partir de sa racine.
	d2.w permet de localiser le redraw. d2 = -1 permet par exemple un re-
draw complet de la fentre, toolbar et menu compris. Bien sr, cela n'a 
de sens que si (d0,d1)=(0,7) ! Ce que l'on appelle "contenu" est la fentre 
utile, toolbar et  menu enlevs.
	L'option d2 = 3 permet non plus de dfinir seulement un pre et une 
profondeur mais permet de dfinir une liste de pres et de profondeurs 
qui seront re-dessins lors du mme message de redraw. En effet, cette 
fonction, au lieu de raliser directement le redraw, cre un message GEM 
de redraw. Ce fonctionnement nous parait plus propre : unicit des routi-
nes de redraw, respect des autres messages de redraw, etc. La contrepar-
tie, c'est la longueur des buffers de messages du GEM. Il ne faut pas que 
vos listes soient trop grandes, car cela surchargerait le systme et le blo-
querait.
	Vous ne devez pas non plus envoyer trop de message d'un seul coup. 
Pensez  regrouper vos redraws dans une mme liste.

GWVA_WIND_OBJ_PRG_DELETE_ALL_WIND:
	Entre
	Sortie

	Ferme et efface du systme toutes les fentres prcdemment cres.

GWVA_WIND_OBJ_PRG_DELETE_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Ferme et efface du systme une fentre.

GWVA_WIND_OBJ_PRG_UNALLOCATE_MEMORY:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Permet de ds-allouer d'ventuels buffers internes plus ceux de l'utili-
sateur (cf. USR_PTR1 & 2 et ceux pour les fentres Bitmap)  n'utiliser 
qu'en cas de destruction de la fentre. Vous ne deviez pas y faire appel !

GWVA_WIND_OBJ_PRG_CLOSE_ALL_WIND:
	Entre
	Sortie

	Ferme toutes les fentres prcdemment ouvertes.

GWVA_WIND_OBJ_PRG_CLOSE_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Ferme une fentre. 

GWVA_WIND_OBJ_PRG_OPEN_ALL_WIND:
	Entre
	Sortie

	Ouvre toutes les fentres prcdemment cres.

GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie		d7.w	= 0 si pas d'erreur.

	Cre et ouvre une fentre.
	Les codes d'erreur possibles sont ceux des mthode 
GWVA_WIND_OBJ_PRG_CREATE_WINDOW et 
GWVA_WIND_OBJ_PRG_OPEN_ONE_WIND.

GWVA_WIND_OBJ_PRG_OPEN_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie		d7.w	= 0 si pas d'erreur.

	Sous-programme d'ouverture d'une fentre Visual. L'ouverture gnre 
le message WM_GWVA_OPEN (WM_BEFORE et WM_AFTER). 
L'ouverture d'une fentre dj ouverte provoque un TOP de cette dernire 
(mise en avant plan).
	Les messages d'erreur possibles sont :
	GWVA_ERROR_WIND_BAD_HANDLE			: mauvais 
handle GEM dans la structure V.A. de la fentre
	GWVA_ERROR_WIND_OPEN				: la fentre n'a 
pu tre ouverte
	GWVA_ERROR_WIND_USER_CANCEL_OPEN	: la fentre a 
t interdite d'ouverture en retour du message WM_GWVA_OPE-
NED+WM_BEFORE.

GWVA_WIND_OBJ_PRG_CALC_SIZE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
			d0.w, d1.w, d2.w, d3.w = X, Y, W, H externes dsirs.
	Sortie

	A partir d'un X, Y, W, H externe en pixels dsirs, cette fonction remet 
toutes les infos de la fentre  jour.
	ATTENTION A LA CREATION DES FENETRES : ELLES DOI-
VENT AVOIR UNE TAILLE MINIMALE A L'OUVERTURE ; SI-
NON LE GEM LES REDIMMENSIONNE A SA CONVENANCE AU 
PREMIER 'MOVE'

GWVA_WIND_OBJ_PRG_UPDA-
TE_TOOLB_AND_FORM_POS:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Actualise les positions des objets d'une fentre (formulaire et toolbar). 
ainsi que leur contenu dans le cas d'objets multi-formulaire (que ce soit la 
toolbar ou le formulaire).

GWVA_WIND_OBJ_PRG_UPDATE_MULTIFORM:
	Entre		a0.l	= pointeur structure fentre Visual,
			d0.w	= 0 : le formulaire principal, 1 : la toolbar.
	Sortie

	Actualise le contenu d'une fentre multi-formulaire, que ce soit au ni-
veau du formulaire ou de la toolbar.

GWVA_WIND_OBJ_PRG_ICONIFY_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

	Iconifie une fentre Visual. a0.l pointe sur la fentre  iconifier.

GWVA_WIND_OBJ_PRG_UNICONIFY_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Dsiconifie une fentre prcdemment iconifie. a0.l pointe sur la fe-
ntre non-iconifie.

GWVA_WIND_OBJ_PRG_BOTTOM_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Place une fentre Visual en arrire plan.
	Disponible  partir de l'AES 4.0.

GWVA_WIND_OBJ_PRG_ONTOP_ONE_WIND:
	Routine interne.

GWVA_WIND_OBJ_PRG_NEWTOP_ONE_WIND:
	Routine interne.

GWVA_WIND_OBJ_PRG_TOP_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Place une fentre en position TOP (avant-plan).

GWVA_WIND_OBJ_PRG_UNTOP_ONE_WIND:
	Routine interne.

GWVA_WIND_OBJ_PRG_FULL_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Rend une fentre FULL (taille maximale permise).

GWVA_WIND_OBJ_PRG_SIZE_ONE_WIND:
	Routine Interne.

GWVA_WIND_OBJ_PRG_MOVE_ONE_WIND:
	Routine Interne.

GWVA_WIND_OBJ_PRG_CREATE_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie		d7.w	= 0 si pas d'erreur

	Cration d'une fentre  partir de la structure Visual.
	Gnre le message WM_GWVA_NEWIND (BEFORE et AFTER).
	Les codes d'erreur possibles sont :
	GWVA_ERROR_WIND_GEM_CREATE			: cration im-
possible
	GWVA_ERROR_WIND_USER_CANCEL_CREATE	: cration 
impossible sur retour du message WM_GWVA_NEWIND+WM_BE-
FORE.

GWVA_WIND_OBJ_PRG_UPDATE_WIND_TITLE:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Actualise la barre de titre de la fentre.

GWVA_WIND_OBJ_PRG_UPDATE_WIND_INFO:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Actualise la barre d'info de la fentre.

GWVA_WIND_OBJ_PRG_UPDATE_WIND_VSLIDE:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Actualise la position et la taille graphique du slider vertical de la fe-
ntre en fonction des valeurs contenues dans la structure Visual.

GWVA_WIND_OBJ_PRG_UPDATE_WIND_HSLIDE:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Actualise la position et la taille graphique du slider horizontal de la 
fentre en fonction des valeurs contenues dans la structure Visual.

GWVA_WIND_OBJ_PRG_CALC_SLIDES_SIZE:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Recalcule la position et la taille des sliders de la fentre.

GWVA_WIND_OBJ_PRG_NAMIFY_UNAMI-
FY_ONE_WIND:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Namification et un-namification de la fentre Visual (ne fait plus appa-
ratre que le titre de la fentre).
	La fentre ne doit avoir pas d'autres gadgets que ceux de la la partie 
haute de la fentre (titre, info, close, full, iconify, ...).

GWVA_APP_OBJ_CREATE_WINDOW:
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie		d7.w	= 0 si pas d'erreur.

	Cration d'une fentre Visual  partir de sa structure. Les codes d'erreur 
possibles en retour sont
	GWVA_ERROR_MALLOC					: erreur lors de 
la cration d'une fentre texte
	GWVA_ERROR_WIND_ALREADY_CREATED	: la fentre Vi-
sual est dj cre
	GWVA_ERROR_WIND_VA_BUFF_FULL		: le nombre 
maximum de fentre V.A. est atteint
	GWVA_ERROR_WIND_BAD_STRUCTURE		: la structure 
de la fentre V.A. est mauvaise
	GWVA_ERROR_WIND_BAD_COLOR_NBR		: la fentre bit-
map V.A. a un nombre de couleur diffrent de celui disponible en affi-
chage
	GWVA_ERROR_WIND_BAD_INC_DEF			: il manque 
des dfinitions dans le fichier .DEF pour la fentre V.A. voulue.
	GWVA_ERROR_WIND_GEM_CREATE			: le GEM n'a 
pas voulu crer la fentre
	GWVA_ERROR_WIND_USER_CANCEL_CREATE	: cration 
impossible sur retour du message WM_GWVA_NEWIND+WM_BE-
FORE.

GWVA_WIND_OBJ_PRG_WM_REDRAW:
	Routine interne.

GWVA_WIND_OBJ_PRG_INTERSEC_REC:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_TOPPED:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_CLOSED:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_FULLED:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_ARROWED:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_HSLID:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_VSLID:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_SIZED:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_MOVED:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_NEWTOP:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_UNTOPPED:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_ONTOP:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_BOTTOM:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_ICONIFY:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_UNICONIFY:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_ALLICONIFY:
	Routine interne.

GWVA_WIND_OBJ_PRG_WM_TOOLBAR:
	Routine interne.

GWVA_JUMP_TO_USER_EVENT_ROUTINE:
	Routine interne.

GWVA_JUMP_TO_USER_REDRAW_ROUTINE:
	Routine interne.

GWVA_WTEXT_OBJ_PRG_CALCULATE_PVSLIDE:
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

 Recalcule la position du curseur ligne d'affichage, ainsi que la position 
du slider vertical (si prsent) et l'affiche.
	Pour les fentres text et bitmap.

GWVA_WTEXT_OBJ_PRG_CALCULATE_HVSLIDE:
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

	Recalcule la taille du slider vertical et l'affiche.
	Pour les fentres text et bitmap.

GWVA_WTEXT_OBJ_PRG_CALCULATE_WHSLIDE:
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

	Recalcule la taille du slider horizontal et l'affiche.
	Pour les fentres text et bitmap.

GWVA_WTEXT_OBJ_PRG_CALCULATE_PHSLIDE:
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

	Recalcule la position du curseur colonne d'affichage, ainsi que la posi-
tion du slider horizontal (si prsent) et l'affiche.
	Pour les fentres text et bitmap.


		9.2.3 Les vnements


Les messages que peut recevoir une fentre sont nombreux. En plus 
des messages de base du GEM, il y en a des spcifiques V.A qui sont l 
pour faciliter votre programmation.
Pour la plus part des messages il y a deux variantes : une avant que le 
V.A ne fasse l'action (par ex. un WM_MOVED) ou bien aprs : pour 
tre inform d'une fermeture par exemple, a peut tre utile pour la d-
truire pour de bon !
Si vous optez pour tre prvenu avant, vous ajouterez WM_BEFO-
RE  votre numro de message et vous pourrez dans ce cas prcis emp-
cher l'action en renvoyant un d7.w ngatif (-1) ou bien autoriser l'ac-
tion avec d7=0.
Si vous optez pour tre prvenu aprs, alors l'action aura eu lieu et 
vous pourrez faire des traitements qui prennent ce fait en compte : ajou-
tez WM_AFTER  votre numro de message.
Vous pouvez d'ailleurs demander  tre prvenu des deux vnements 
!

	Pour tous ces messages, nous avons :
	d0.w	= numro du message (avec WM_BEFORE ou WM_AFTER 
ventuellement ajout)
	a0.l	= pointeur sur la fentre pour qui est le message
	a1.l	= pointeur sur le buffer de message GEM pour rcuprer les 
donnes dans le
		  cas d'un message classique de 16 octets. (Pour rcuprer le 
Handle de
		  l'application qui a mis le message par exemple.

	Les messages sont :
		. WM_REDRAW	
		. WM_TOPPED
		. WM_CLOSED
		. WM_FULLED
		. WM_ARROWED
		. WM_HSLID
		. WM_VSLID
		. WM_SIZED
		. WM_MOVED
		. WM_NEWTOP
		. WM_UNTOPPED
		. WM_ONTOP
		. WM_BOTTOM
		. WM_ICONIFY
		. WM_UNICONIFY
		. WM_ALLICONIFY
		. WM_TOOLBAR

	Les messages spcifiques au V.A sont :
		. WM_GWVA_NEWIND	Message reu  la cration d'une 
nouvelle
							fentre, avant mme son alloca-
tion de handle si
							WM_BEFORE ajoutt. Donc 
avant son 1er redraw
							quoi qu'il arrive. Si vous ajoutez 
WM_BEFORE :
							Renvoyer d7=0 ou d7=-1 pour 
annuler la
							cration.
		. WM_GWVA_OPEN		Message reu  l'ouverture d'une 
fentre,
							juste avant/aprs son 1er redraw 
(aprs si vous
							ajoutez WM_AFTER).
							Si vous ajoutez WM_BEFORE : 
Retourner d7=0
							ou d7=-1 pour annuler son ou-
verture.

	Quelques prcisions sur le message WM_REDRAW :

Pour ce message, notons qu'il ragit diffremment en fonction du type de 
fentre: :

	. bitmap : message avant et aprs.
	. texte : pas de message BEFORE puisque de toute faon il y a un rec-
tangle blanc
	. formulaire : un message avant et aprs.
	. custom : un seul message.

	Pour tous, vous aurez dans d0-d3.w la zone x1,y1 x2,y2 en pixels in-
clus  re-dessiner (dj clippe)

C'est le message le plus important pour une fentre custom puisqu'il va 
permettre de re-dessiner son contenu. Pour cet objet, WM_AFTER & 
BEFORE n'ont aucun sens vu que le V.A n'effectue aucun dessin.


	9.3 L'objet "fentre texte"


		9.3.1 Les proprits


GWVA_WTEXT_OBJ_NB_COLONNES:			1 mot
	largeur de la fentre en nombre de caractre.
	Attention : TAILLE MINIMALE =  64 PIXELS (6-8 caractres de la 
font systme)

GWVA_WTEXT_OBJ_NB_LIGNES:				1 mot
	hauteur de la fentre en nombre de caractre.

GWVA_WTEXT_OBJ_FNT_SIZE:				1 mot
	taille voulue de la font systme en pixels (peut tre modifi par le Vi-
sual si la taille n'est pas disponible).

GWVA_WTEXT_OBJ_CELL_WIDTH:				1 mot
	largeur d'une cellule de caractre de la font.

GWVA_WTEXT_OBJ_CELL_HEIGHT:			1 mot
	hauteur d'une cellule de caractre de la font.

GWVA_WTEXT_OBJ_MALOC:					1 mot 
long
	pointeur sur le buffer de texte. Positionn par le Visual.
	Dans ce buffer, le texte est stock  la suite, sans line-feed, ni carriage 
return.

GWVA_WTEXT_OBJ_CUR_BUF_COL:			1 mot
	Variable interne

GWVA_WTEXT_OBJ_CUR_BUF_LIGN:			1 mot
	Variable interne

GWVA_WTEXT_OBJ_CUR_AFF_COL:			1 mot
	Variable interne

GWVA_WTEXT_OBJ_CUR_AFF_LIGN:			1 mot
	Variable interne

GWVA_WTEXT_OBJ_BUF_COLONNE:			1 mot
	Variable interne

GWVA_WTEXT_OBJ_BUF_LIGNE:				1 mot
	Variable interne

GWVA_WTEXT_OBJ_AFF_COLONNE:			1 mot
	Variable interne

GWVA_WTEXT_OBJ_AFF_LIGNE:				1 mot
	Variable interne


		9.3.2 Les mthodes


GWVA_WTEXT_OBJ_PRG_CALC_PARAM_TEXT:
	Routine interne.

GWVA_WTEXT_OBJ_PRG_WRITE_TEXT_IN_WINDOW:
	Routine interne.

GWVA_WIND_OBJ_PRG_ARROWED_WINDOW_TEXT:
	Routine interne.

GWVA_WIND_OBJ_PRG_HSLIDE_WINDOW_TEXT:
	Routine interne.

GWVA_WIND_OBJ_PRG_VSLIDE_WINDOW_TEXT:
	Routine interne.

GWVA_WTEXT_OBJ_PRG_WRITE_IN_WINDOW:
	Entre		a0.l	= pointeur structure fentre Visual,
			a1.l	= pointeur sur le texte (termin par 0).
	Sortie

	Affiche une chane de caractre dans une fentre texte.

GWVA_WTEXT_OBJ_PRG_WRITE_IN_BUFFER:
	Entre		a0.l	= pointeur structure fentre Visual,
			a1.l	= pointeur sur le texte (termin par 0).
	Sortie

	Ecrit une chane de caractre dans le buffer de la fentre, mais sans r-actualiser l'affichage.

GWVA_WTEXT_OBJ_PRG_WRITE_BUFFER_IN_WIN-
DOW:
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

	Actualise l'affichage du buffer de la fentre texte.

GWVA_WTEXT_OBJ_PRG_SCROLL_WINDOW:
	Routine interne.

GWVA_WTEXT_OBJ_PRG_CALC_PARAM_TEXT2:
	Routine interne.

GWVA_WTEXT_OBJ_PRG_SCROLL_VERT:
	Routine interne.

GWVA_WTEXT_OBJ_PRG_SCROLL_HORI:
	Routine interne.

GWVA_WTEXT_OBJ_PRG_CALCULATE_PHSLIDE2:
	Routine interne.

GWVA_WTEXT_OBJ_PRG_CALCULATE_PVSLIDE2:
	Routine interne.


	9.4 Les objet "fentre formulaire"


		9.4.1 Les proprits


Voici le descriptif de l'objet formulaire qui sert aussi pour les toolbar et 
les toolbox :

GWVA_WFORM_OBJ_FORM_IDX:				1 mot
	numro de l'arbre servant de dessin au formulaire

GWVA_WFORM_OBJ_FORM_PTR:				1 mot 
long
	adresse du formulaire calcule par le V.A

GWVA_WFORM_OBJ_CLICK_ROUTINE:			1 mot 
long
	routine pour tout click dans le formulaire ou 0.L Ceci permet de crer 
toute une famille d'objets cliquables sans dfinir une liste monstrueuse 
d'objets dpendant du formulaire.

GWVA_WFORM_OBJ_FOCUSED_TXT:			1 mot
	Le champs de texte ditable qui aura le curseur au dbut
	(0.w si pas de texte ditable)

	Les variables suivantes sont en lecture uniquement (mettez 0 au dbut) 
:

GWVA_WFORM_OBJ_CURSOR_POS:			1 mot
	position du curseur ?

GWVA_WFORM_OBJ_L_SCULPT:				1 mot
	largeur additionnelle  gauche

GWVA_WFORM_OBJ_T_SCULPT:				1 mot
	" en haut

GWVA_WFORM_OBJ_R_SCULPT:				1 mot
	"  droite

GWVA_WFORM_OBJ_B_SCULPT:				1 mot
	" en bas

GWVA_WFORM_OBJ_W_SCULPT:				1 mot
	largeur en tenant compte du 'relief'

GWVA_WFORM_OBJ_H_SCULPT:				1 mot
	hauteur "

GWVA_WFORM_OBJ_IS_CLONE_FORM:			1 mot
	champ de bits servant  la sauvegarde automatique des objets d'un for-
mulaire associ  une fentre. Dfinition du champ :
	bit 0 : sauve l'tat des objets et le caractre des BOXCHAR
	bit 1 : sauve les TEDINFO
	bit 2 : sauve les textes non ditables sauf le caractre des icones
	bit 3 : sauve les textes ditables (texte + mise en forme + champ de 
saisie)
	bit 4 : sauve les BITBLK
	bit 5 : sauve les ICONBLK
	bit 6 : sauve les CICONBLK
	bit 7 : sauve les APPLBLK
	Ce champ est utilis par le V.A. lors d'applications se servant d'un m-
me formulaire dans plusieurs fentres simultanment.
	Ces bits sont  dfinir par le programmeur.

GWVA_WFORM_OBJ_CLONE_FORM_SAVE:		1 mot 
long
	pointeur sur une sauvegarde du contenu du formulaire de la fentre.
	Ce mot long est utilis par le V.A. lors d'applications se servant d'un 
mme formulaire dans plusieurs fentres simultanment.
	La premire sauvegarde est  effectuer par le programmeur, lors de 
l'ouverture de la fentre par exemple. Voir la mthodes 
GWVA_WFORM_OBJ_PRG_SAVE_FORM.
	Vous pouvez programmer la libration automatique de ce pointeur si 
c'est un malloc (cf. proprits de la fentre : GWVA_WIN_BIT_FREE-
FORM & FREETOOL)

GWVA_WFORM_OBJ_CLONE_MAIN_PTR:		1 mot 
long
	pointeur sur un mot long pointant lui mme en permanence sur la 
structure de la fentre clone active.
	Le pointeur point par lui est  mettre  zro  l'initialisation du pro-
gramme.
	Ce mot long est utilis par le V.A. lors d'applications se servant d'un 
mme formulaire dans plusieurs fentres simultanment.

	Pour plus d'information sur ces champs, rfrez-vous  l'exemple VI-
SUAL40\SAMPLES\MULTIDOC\FORM\PROJECT.OBJ

GWVA_WFORM_OBJ_START_OBJ_LIST:
	vient ensuite la liste des objets dpendant du formulaire, constitue de :
	GWVA_WFORM_OBJ_DEF_OBJ_NUM:			1 mot
		 le numro de l'objet
	GWVA_WFORM_OBJ_DEF_OBJ_SHORTCUT:	1 mot
		son raccourci (0 si aucun) cf. racourcis pour les menus
	GWVA_WFORM_OBJ_DEF_OBJ_TYPE:			1 mot
		son type :
		1 : GWVA_FORM_WIND_OBJECT_TEXT 		: 
champs de texte (ditable
			ou pas)
		2 : GWVA_FORM_WIND_OBJECT_BUTTON	 : bou-
ton
		3 : GWVA_FORM_WIND_OBJECT_MENU_POPUP : menu 
popup
		4 : GWVA_FORM_WIND_OBJECT_RADIO_BUTTON : 
bouton radio :
			mettre comme numro d'objet celui du pre des 
boutons
			radio.
		*5 : GWVA_FORM_WIND_OBJECT_ROLL_POPUP : roll 
over popup object
			(pointeur sur une structure du popup associ) : pas encore 
support
		*6 : GWVA_FORM_WIND_OBJECT_ROLL_RADIO_B : 
roll over radio-button 
			object (pointeur sur structure du radio bouton associ) : 
pas encore
			support
		*7 : GWVA_FORM_WIND_OBJECT_PROGRESS_BAR : 
percent-progress 
			graphic object
		8 : GWVA_FORM_WIND_OBJECT_SLIDER	 : slider gra-
phic object
			* : pas d'vnements pour ces objets
	GWVA_WFORM_OBJ_DEF_OBJ_PTR_STRUCT:	1 mot 
long
		pointeur sur la structure de l'objet
	GWVA_WFORM_OBJFORMLIST_LENGTH:
		taille de la structure = 10 octets

	fin de la liste par -1.w

Attention : un bouton exit ou touchexit sera re-dessin dslectionn s'il 
est enfonc.


		9.4.2 Les mthodes


Quatres mthodes pour ces objets.
Les trois premires concernent la sauvegarde, la restauration et la co-
pie du contenu d'un formulaire, en vu soit de l'utilisation du mme for-
mulaire dans plusieurs fentres, soit de l'implantation d'une fonction An-
nuler dans un formulaire. L'utilisation de ces mthodes pour ces deux 
cas peut tre vu respectivement dans VISUAL40\SAMPLES\MULTI-
DOC\FORM\ et dans VISUAL40\START\, mais surtout dans le pro-
gramme LOOK

GWVA_WFORM_OBJ_PRG_SAVE_FORM:
	Entre		d0.w	= numro de l'arbre dans le formulaire
			d1.w	= paramtrage de la sauvegarde
				bit 0 : sauve l'tat des objets et le caractre des 
BOXCHAR
				bit 1 : sauve les TEDINFO
				bit 2 : sauve les textes non ditables sauf le caract-
re des icones
				bit 3 : sauve les textes ditables (texte+mise en for-
me+champ de saisie)
				bit 4 : sauve les BITBLK
				bit 5 : sauve les ICONBLK
				bit 6 : sauve les CICONBLK
				bit 7 : sauve les APPLBLK
				bit 8 : sauve les structures des objets
			a0.l	= 0 (MALLOC automatique) ou pointeur sur un 
prcdent champ de
				sauvegarde
			a1.l	= si le bit 8 de d1.w est positionn ce registre doit 
contenir le pointeur sur
				une structure spcifique de formulaire de type 
SPEC_PTR associe  d0.w
	Sortie		a0.l	= pointeur sur le champ de sauvegarde
			d7.w	= code d'erreur ou 0 si non

	Sauvegarde paramtrable d'un formulaire.

GWVA_WFORM_OBJ_PRG_RESTORE_FORM:
	Entre		d0.w	= numro de l'arbre
			d1.w	= paramtrage (voir sauvegarde)
			a0.l	= pointeur sur le champ de sauvegarde
			a1.l	= si le bit 8 de d1.w est positionn ce registre doit 
contenir le pointeur sur
				une structure spcifique de formulaire de type 
SPEC_PTR associe  d0.w
	Sortie		d7.w	= code d'erreur ou 0 si non

 Restauration d'un formulaire prcdemment sauvegard. On peut ne res-
taurer qu'une partie des informations du formulaire sauv.

GWVA_WFORM_OBJ_PRG_COPY_SAVED_FORM:
	Entre		a0.l	= pointeur sur le champ de sauvegarde source
			a1.l	= 0 (cration de la copie - malloc) ou adresse d'un 
buffer de destination
	Sortie		a0.l	= pointeur de la sauvegarde de destination
			d7.w	= code d'erreur ou 0 si non

	Copie d'une sauvegarde de formulaire.

GWVA_WFORM_OBJ_PRG_CALC_SCULPT:
	Routine interne			


		9.4.3 Les vnements spcifiques


	Les vnements sont les suivants et s'appliquent aux objets du formu-
laires. Pour les avoir, il faut dcrire l'objet dans la liste des objets du for-
mulaire et que l'vnement soit dans sa liste d'vnement.
. Les objets graphiques engendrent des vnements seulement s'ils 
ne sont pas disable.
. Tous les objets graphiques peuvent tre selectable.
. Seuls les boutons peuvent tre exit.

	. GWVA_EVNT_CLICK		tous les objets exit, touch-exit ou 
default.
	. GWVA_EVNT_DCLICK		tous les objets exit ou touch-exit.
	. GWVA_EVNT_GOTFOCUS		les objets champs ditables, bou-
tons exit (non
							implment pour les boutons)
	. GWVA_EVNT_LOSTFOCUS	idem
	. GWVA_EVNT_SELECTED		tous les objets selectable mais 
non exit
	. GWVA_EVNT_UNSELECTED	idem
	. GWVA_EVNT_CHANGED		les objets textes ditables.


		9.4.4 Les objets Visual Assembleur


			9.4.4.1 L'objet texte


Cette structure est lie  tous les objets graphiques non slectionnables.

GWVA_FORM_TXT_OBJ_START_EVNT_LIST:
	La liste des vnements est constitue de : 
	. 1 mot : l'vnement
	. 1 mot long : le pointeur sur la routine
	.-1.w  la fin de la liste

	Aucune proprit pour cet objet, juste une liste d'vnements parmi :
. GWVA_EVNT_CLICK		pour les objets exit, touch-exit 
ou default.
. GWVA_EVNT_DCLICK		pour les objets exit ou touch-exit
. GWVA_EVNT_GOTFOCUS	pour les textes ditables (et les 
objets exit : boutons, 
						non encore implment)
. GWVA_EVNT_LOSTFOCUS	idem

En cas de retour vous avez dans les registres :
		d0.w	= numro de l'objet du formulaire sur lequel l'action por-
te.
		a0.l	= pointeur sur la structure de la fentre
		a1.l	= pointeur sur la structure formulaire
		a2.l	= pointeur structure vnement (pointeur sur objet dans 
la liste des objets)
		a3.l	= pointeur sur la structure de l'objet texte


			9.4.4.2 L'objet bouton

Cette structure est lie  tous les objets graphiques slectionnables.

	La structure de l'objet bouton est la suivante :
GWVA_FORM_BTON_OBJ_STATE:				1 mot
	tat de l'objet identique  celui du GEM (bit 0 = slectionn ...)

GWVA_FORM_BTON_OBJ_START_EVNT_LIST:	1 mot
	La liste des vnements est constitue de : 
	. 1 mot : l'vnement
	. 1 mot long : le pointeur sur la routine
	. -1.w  la fin de la liste

La liste d'vnements est :
. GWVA_EVNT_CLICK		pour les objets exit, touch-exit 
ou default.
. GWVA_EVNT_DCLICK		pour les objets exit ou touch-exit
. GWVA_EVNT_GOTFOCUS	pour les objets exit (boutons) :	non encore implment
. GWVA_EVNT_LOSTFOCUS	idem
. GWVA_EVNT_SELECTED	pour les objets non exit et non 
touch-exit
. GWVA_EVNT_UNSELECTED	idem

En cas de retour vous avez dans les registres :
		d0.w	= numro de l'objet du formulaire sur lequel l'action porte
		d1.w	= tat du bouton (bit 0 : selected ...)
		a0.l	= pointeur sur la structure de la fentre
		a1.l	= pointeur sur la structure formulaire
		a2.l	= pointeur structure vnement (pointeur sur objet dans 
la liste des objets)
		a3.l	= pointeur sur la structure de l'objet bouton


			9.4.4.3 L'objet popup


Cette structure est lie  un objet graphique string touch-exit et  un 
autre objet pre dans un autre formulaire dont les fils formeront toutes les 
slections possibles de votre popup.
La structure de l'objet popup est la suivante :

GWVA_FORM_POP_OBJ_TREE_FORM:			1 mot
	numro de l'"arbre" du ressource .RSC (formulaire) contenant le po-
pup

GWVA_FORM_POP_OBJ_FORM_IDX:			1 mot
	numro de l'objet dans l'arbre qui sera le popup

GWVA_FORM_POP_OBJ_SELECTION:			1 mot
	numro de l'objet slectionn au dbut ( initialiser par l'utilisateur)

GWVA_FORM_POP_OBJ_CHANGE_ROUTINE:		1 mot 
long
	pointeur sur la routine associe  toute nouvelle slection (0.L si aucu-
ne)

	En cas de retour vous avez dans les registres :
		d0.w	= N objet du formulaire cliqu qui a entran l'activation 
du popup
		d1.w	= nouvelle slection
		d2.w	= ancienne slection
		a0.l	= pointeur sur la structure de la fentre
		a1.l	= pointeur sur la structure formulaire
		a2.l	= pointeur structure vnement (pointeur sur objet dans 
la liste des objets)
		a3.l	= pointeur sur la structure de l'objet popup


			9.4.4.4 L'objet radio-bouton

Cette structure est lie  un objet graphique pre dont les fils sont des 
radio-boutons.
Remarque importante : le numro de l'objet dfini dans la liste des ob-
jets du formulaire est celui du pre de tous les radio-boutons.
La structure de l'objet radio-bouton est la suivante :

GWVA_FORM_RADIO_OBJ_SELECTION:			1 mot
	numro de l'objet slectionn au dbut ( initialiser par le program-
meur)

GWVA_FORM_RADIO_OBJ_CHANGE_ROUTINE:	1 mot 
long
	pointeur sur la routine associe  toute nouvelle slection (0 si aucune)

	En cas de retour vous avez dans les registres :
		d0.w	= nouvelle slection
		d1.w	= ancienne slection
		a0.l	= pointeur sur la structure de la fentre
		a1.l	= pointeur sur la structure formulaire
		a2.l	= pointeur structure vnement (pointeur sur objet dans 
la liste des objets)
		a3.l	= pointeur sur la structure de l'objet radio-bouton


			9.4.4.5 L'objet barre de 
progression


	Cet objet a des proprits, des mthodes mais pas d'vnements puis-
qu'il est visuel uniquement, et que son tat est chang par le program-
meur.
Au niveau graphique, il s'agit d'un pre contenant un fils de taille va-
riable, calcule en fonction du pourcentage que vous donnez, et qui  
100% est aussi grand que son pre. On peut y associer un texte devant 
pouvoir contenir au moins trois caractres, pour avoir le pourcentage en 
forme dcimale.

GWVA_FORM_PROGRESS_OBJ_PERCENT:		1 mot
	pourcentage 0 <= percent <= 100 sinon infini "oo"

GWVA_FORM_PROGRESS_OBJ_TEXT_IDX:		1 mot
	index du texte ASCII ou sera recopi la valeur en ASCII (0 si vous 
n'en dsirez pas).

GWVA_FORM_PROGRESS_OBJ_GRAPHIC_FIDX:	1 mot
	index du graphique pre fixe contenant l'autre variable (0 si pas de gra-
phique)

GWVA_FORM_PROGRESS_OBJ_GRAPHIC_SIDX:	1 mot
	index du graphique dont la taille va varier de 0  celle du pre ci des-
sus

	Ses mthodes sont les suivantes :

GWVA_PROGRESS_OBJ_PRG_SET_PERCENT:
	Entre		a0.l	= pointeur sur l'objet barre de progression
			d0.w	= pourcentage
	Sortie

	Pour mettre  jour le pourcentage dans l'objet sans rafficher.

GWVA_PROGRESS_OBJ_PRG_UPDATE_PERCENT:
	Entre		a0.l	= pointeur sur la fentre du formulaire contenant la 
barre
			a1.l	= pointeur sur l'objet barre de progression
			d0.w	= pourcentage
			d1.w	= (0) si la barre est dans le formulaire (1) si elle est 
dans la toolbar
	Sortie

	Pour changer le pourcentage et rafficher la barre.

GWVA_PROGRESS_OBJ_PRG_PRINT_PERCENT:
	Entre		a0.l	= pointeur sur la fentre du formulaire contenant la 
barre
			a1.l	= pointeur sur l'objet barre de progression
			d0.w	= (0) si la barre est dans le formulaire (1) si elle est 
dans la toolbar
	Sortie

	Pour rafficher la barre.


			9.4.4.6 L'objet slider


Cet objet est compos d'au moins 2 objets graphiques : la glissire (le 
pre) et le coulisseau (le fils). Quatre autres objets (optionnels) peuvent 
leurs tre adjoints : un objet pour dplacer le coulisseau de +1 lment, 
un objet pour dplacer le coulisseau de -1 lment, un objet pour dpla-
cer le coulisseau de +1 "page" et un objet pour dplacer le coulisseau de -1 "page".
Ces objets doivent tre dfinit normalement dans la liste des objets et 
tous points sur la structure suivante :

GWVA_FORM_SLIDER_OBJ_POS:				1 mot 
long
	Position du coulisseau (en nombre d'lment : 0 -> (LENGTH-SIZE)

GWVA_FORM_SLIDER_OBJ_SIZE:				1 mot 
long
	Nombre d'lments reprsentant le coulisseau (une page)

GWVA_FORM_SLIDER_OBJ_LENGTH:			1 mot 
long
	Nombre d'lments reprsentant la glissire. La taille de la glissire 
doit suprieur ou gale  la taille du coulisseau.

GWVA_FORM_SLIDER_OBJ_ORIENT:   			1 mot
	Direction du slider (0 horizontal, 1 vertical)

GWVA_FORM_SLIDER_OBJ_GRAPHIC_FIDX:   	1 mot
	Index du graphique de la glissire

GWVA_FORM_SLIDER_OBJ_GRAPHIC_SIDX:  	1 mot
	Index du graphique du coulisseau en lui mme

GWVA_FORM_SLIDER_OBJ_GRAPHIC_P1_IDX:	1 mot
	Index de l'objet provoquant l'addition d'un lment (0 si pas)

GWVA_FORM_SLIDER_OBJ_GRAPHIC_M1_IDX:	1 mot
	Index de l'objet provoquant la soustraction d'un lment (0 si pas)

GWVA_FORM_SLIDER_OBJ_GRAPHIC_P1P_IDX:	1 mot
	Index de l'objet provoquant l'addition d'une page (0 si pas)

GWVA_FORM_SLIDER_OBJ_GRAPHIC_M1P_IDX:	1 mot
	Index de l'objet provoquant la soustraction d'une page (0 si pas)

GWVA_FORM_SLIDER_OBJ_CHANGE_ROUTINE:	1 mot 
long
	Pointeur sur la routine associe  toute nouvelle slection (0 si pas)

	En cas de retour vous avez dans les registres :
		a0.l	= pointeur sur la structure de la fentre Visual,
		a1.l	= pointeur sur le formulaire contenant le slider,
		a2.l	= pointeur structure vnement (pointeur sur l'objet dans 
la liste des objets)
		a3.l	= pointeur sur la structure de l'objet slider
		d0.l	= nouvelle position du slider
		d1.l	= dplacement effectu (sign)

	Sa seule mthode est la suivante :

GWVA_SLIDER_OBJ_PRG_SET_SLIDER:
	Entr		a0.l	= pointeur structure fentre Visual,
			a1.l	= pointeur sur la structure du formulaire contenant 
l'objet,
			a2.l	= pointeur sur la structure de l'objet slider.
	Sortie		d7.l	= dplacement ventuel du silder (structure et affi-
chage actualiss).

	Recalcule et actualise la position et la taille de l'objet slider en fonction 
de sa structure. Si la taille de la glissire est infrieure  la taille du cou-
lisseau, la taille et la position du coulisseau seront ajustes  la taille du 
pre et  la position 0. Mais aucune modification n'est faite aux valeurs 
prsentes dans la structure.


	9.5 L'objet fentre bitmap


Les fentres bitmap permettent d'afficher simplement et proprement 
des images  l'cran.
Actuellement, il n'existe aucune fonction de dithering (rduction du 
nombre de couleur d'une image) implante dans le V.A.. Par consquent, 
seules les images de mme rsolution couleur que celle du bureau peu-
vent tre affiches pour le moment.


		9.5.1 Les proprits


GWVA_WBITM_OBJ_IMG_WIDTH:				1 mot
	largeur de l'image (pixels)

GWVA_WBITM_OBJ_IMG_HEIGHT:				1 mot
	hauteur de l'image (pixels)

GWVA_WBITM_OBJ_DATA_PTR:				1 mot 
long
	pointeur sur l'image en elle-mme

GWVA_WBITM_OBJ_PAL_PTR:					1 mot 
long
	pointeur sur la palette (4/16/256 couleurs)

GWVA_WBITM_OBJ_NBR_BITPLANES:			1 mot
	nombre de plans de l'image : 1, 2, 4, 8, 16 (true color)

GWVA_WBITM_OBJ_AFF_DX:					1 mot
GWVA_WBITM_OBJ_AFF_DY:					1 mot
	position (X,Y) dans l'image du pixel du coin suprieur gauche de la fe-
ntre


		9.5.2 Les mthodes


GWVA_WIND_OBJ_PRG_ARROWED_WINDOW_BITMAP:
	Routine interne.

GWVA_WIND_OBJ_PRG_HSLIDE_WINDOW_BITMAP:
	Routine interne.

GWVA_WIND_OBJ_PRG_VSLIDE_WINDOW_BITMAP:
	Routine interne.

GWVA_WBITM_OBJ_PRG_SET_RIGHT_PALETTE:
	Entre
	Sortie

	Actualise la palette systme en fonction de la fentre TOP (en avant 
plan).
	Pour une fentre bitmap, c'est la palette de l'image qui est utilise. Pour 
les autres types de fentre, c'est la palette systme (celle disponible au 
lancement du programme) qui est utilise.

GWVA_WBITM_OBJ_PRG_RESET_DESK_PALETTE:
	Entre
	Sortie

	Repositionne la palette systme.


	9.6 L'objet fentre custom


Cette fentre est la seule  n'avoir aucune proprit spciale ; c'est vous 
qui grez son contenu : d'ailleurs son pointeur sur structure doit tre 0.L.
Par contre elle peut trs bien avoir une toolbar ou un menu attach !
Elle n'a aucune mthode particulire, hormis celles d'une fentre clas-
sique : move, namify ...


	9.7 L'lment toolbar


L'lment toolbar n'est ni plus ni moins qu'un formulaire qui serait af-
fich en haut d'une fentre. Il supporte les mmes vnements et objets 
qu'un formulaire classique, mais ne pourra jamais avoir de raccourcis ! Il 
est en fait dj une sorte de raccourci souris d'une fonction courante qui 
se trouve dans un menu.
L'lment toolbar supporte aussi le multi-formulaire : c'est  dire que 
l'on peut avoir le mme formulaire de toolbar dans plusieurs fentres. R-
frez-vous  l'exemple SAMPLES\MULTIDOC\FORM\PROJECT.* 
pour plus de prcision.


	9.8 L'lment menu


La ligne de menu dans une fentre n'est pas implmente dans le V.A. 
4.0. Mais tout est prvu pour, il suffira de placer un pointeur sur une 
structure de menu.


		9.8.1 Les proprits


		9.8.2 Les mthodes


		9.8.3 Les vnements


	9.9 Les raccourcis claviers


N'importe quel objet clickable peut se voir assigner un raccourci qui 
reviendra en fait  un simple click sur cet objet. On rserve en gnral 
l'emploi des ctrl+? au raccourcis pour les menus et les alt+? aux raccour-
cis pour les botes de dialogue ...

	Un raccourci est dfini sur 1 mot :
. 0.w si pas de raccourci
. autrement, la dfinition est comme suit :
. 1.b pour le masque de bits des touches spciales
bit 0=Rshift, bit 1=Lshift, bit 2=Ctrl, bit 3=Alt
. 1.b pour la valeur ASCII ou le scan-code US

Exemples :
CTRL+i = dc.w $00*256+'i'-'a'+1
Les combinaisons de touches avec CTRL+une lettre de l'alphabet ont 
une reprsentation ASCII : CTRL+a = valeur ASCII 1, ... CTRL+z = va-
leur ASCII 26
ALT+a = dc.w $08*256+'a'

Mthode pour dterminer le raccourci clavier :
Prendre son Compendium prfr,
Regarder l'ikbd.w donn pour la combinaison de touche sans shift
si l'octet bas est non nul : valeur ASCII : on se fiche des touches 
spciales
s'il est nul, c'est un scancode. On tient compte alors des touches 
spciales :
1) si la touche correspond  quelque chose d'ASCII, le mettre
2) sinon, (par ex. F1) mettre le scancode +$80

Note : ds que l'on a pas $80+..., le masque de touches spciales 
est indiffrent
Attention : Pas de raccourcis utilisant ALT et une touche stricte-
ment  droite de 8 sur le clavier (scancode suprieur  $80 !!).

