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



Aprs avoir cr votre ressource, et votre projet.HS, vient le temps d'attaquer le fichier pro-
jet.OBJ. Ce fichier est l'interface entre le ressource graphique et vos routines vnementielles. 
Ce fichier ne contient aucun code, uniquement du DATA. De mme que le projet.DEF, il ne 
devrait, 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. Pour clarifier les propri-
ts de chaque objet, les structures sont donnes sous forme de macros qui regroupent les pro-
prits de mme nature. 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 :

objet_fenetre_info:
	GWVA_WIND_STRUCT_FAMILY		
	GWVA_WIND_STRUCT_BASE
; GWVA_WFORM_GADGETS_BASE|MASK_INFO,GWVA_WIN_PROPERTIES_BASE,
& window_info_name,GWVA_APP_OBJ_COPYRIGHT_MESSAGE

	GWVA_WIND_STRUCT_DEF_EXTD	
	GWVA_WIND_STRUCT_FOCUS		GWVA_WIND_STRUCT_FIRST_GEOMETRY GWVA_WIN_H_CENTER,GWVA_WIN_V_CENTER
	GWVA_WIND_STRUCT_CONTENTS	

	GWVA_WIND_STRUCT_TYPE     GWVA_WIND_TYPE_FORM,window_info_specs
	GWVA_WIND_STRUCT_USER		
	
; start_evnt_list		
	;GWVA_WIND_STRUCT_EVENT
	GWVA_WIND_STRUCT_END_LIST

window_info_specs:	
	GWVA_WFORM_STRUCT_BASE	FORM_INFORMATION	GWVA_WFORM_STRUCT_CLONE		

; start_obj_list
	;GWVA_WFORM_STRUCT_OBJ			
	GWVA_WFORM_STRUCT_END_LIST

window_info_name:	dc.b 'Informations ...',0


	9.1 L'objet "application"

Cet objet dfinit votre objet application principale, ses proprits, ses vnements.

		9.1.1 Les proprits de l'objet

Lorsque vous faites "include visual41.s" en tte de votre programme, le registre a1 doit 
pointer sur cet objet. Voyons la faon de dclarer cet objet dans le .OBJ :

objet_application:
	GWVA_APP_STRUCT_BASE	paramtres
	GWVA_APP_STRUCT_MOUSE_ZONES	paramtres ventuels
	GWVA_APP_STRUCT_TIMER	paramtres ventuels
	GWVA_APP_STRUCT_INIT	paramtres
	GWVA_APP_STRUCT_MSG	paramtres ventuels
	GWVA_APP_STRUCT_EVENTS	paramtres ventuels

On indique ci-aprs les paramtres de chaque macro, ainsi que le label d'offset et la taille de 
chaque paramtre. Les paramtres facultatifs sont indiqus par une astrisques. Si l'astrisque 
est suivie d'un numro, les paramtres facultatifs qui ont le mme numro sont en fait un 
groupe de paramtres ; c'est tout le groupe de paramtres qui est facultatif, et non pas les para-
mtres individuellement.

GWVA_APP_STRUCT_BASE : cette structure dfinit les proprits fondamentales de 
l'application, par les paramtres suivants:

 GWVA_APP_STRUCT_BASE	FLAGS,REG_NAME,ACC_NAME,RSC_INFO,MAIN_MENU_PTR, 
&		*BACKGROUND_WIND_PTR,*ALL_ICON_PTR,*TSR_SIZE

	FLAGS :		GWVA_APP_OBJ_FLAGS (1 octet)
		Sert  dfinir les proprits suivantes:	
			GWVA_APP_BIT_RSC_IN_MEM : le ressource est en mmoire (INCBIN) et 
devra tre relog par par le Visual (MDL_RELOCATE_RSC dans .DEF). Sinon, le 
ressource sera charg. (cf. GWVA_APP_OBJ_RSC_INFO )
			GWVA_APP_BIT_RSC_MULTI_RES : Indique qu'il y a un ressource diffrent 
pour chaque rsolution. Sinon il y a un seul ressource. 
(cf. GWVA_APP_OBJ_RSC_INFO )
			GWVA_APP_BIT_BACKGROUND : Indique qu'il y a une fentre qui sert de 
fond pour l'application. Sinon, ou si l'application est lance en accessoire, il y a le bureau 
vide.
			GWVA_APP_BIT_BACKGROUND_CENTER : Demande au Visual de centrer 
l'objet numro 0 du formulaire de la fentre de fond dans l'cran ( le cas chant ).
			GWVA_APP_BIT_MENU : Il y a un menu pour l'application principale.
	REG_NAME : 	GWVA_APP_OBJ_REG_NAME (1 long)
			Pointeur sur une chane, d'obligatoirement 8 caractres, termine par un zro. C'est ce 
nom qui sera utilis pour enregistrer le processus (MultiTOS) ou l'accessoire par 
REG_NEWNAME de la fonction MENU_REGISTER (AES).
	ACC_NAME :	 GWVA_APP_OBJ_ACC_NAME (1 long)
			Pointeur sur une chane de caractres termine par un zro. C'est le nom de l'accessoire 
ou de l'application (MultiTOS) tel qu'il apparatra dans la barre de menu.
	RSC_INFO :	 GWVA_APP_OBJ_RSC_INFO (1 long)
			Selon le cas (cf. GWVA_APP_OBJ_FLAGS ):
	-	zro : pas de ressource.
	-	pointeur sur la chane de caractres dfinissant le chemin et le nom du ressource 
(pathname) sur disque.
	-	pointeur sur un tableau de 5 pointeurs sur les chanes de caractre dfinissant le chemin 
et le nom du ressource (pathname) sur disque des ressources. 
(si GWVA_APP_BIT_RSC_MULTI_RES est positionn)
	-	pointeur sur l'adresse du ressource. (si GWVA_APP_BIT_RSC_IN_MEM)
	-	pointeur sur un tableau de 5 pointeurs sur l'adresse des ressources. 
(si GWVA_APP_BIT_RSC_IN_MEM et GWVA_APP_BIT_RSC_MULTI_RES)
	MAIN_MENU_PTR :	GWVA_APP_OBJ_MAIN_MENU_PTR (1 long)
			Pointeur sur une structure menu, ou zro s'il n'y a pas de menu 
(cf. GWVA_APP_BIT_MENU).
	*BACKGROUND_WIND_PTR :	GWVA_APP_OBJ_BACKGROUND_WIND_PTR (1 long)
			Pointeur sur la structure fentre qui servira de fond pour l'application 
(cf. GWVA_APP_BIT_BACKGROUND et GWVA_APP_BIT_BACKGROUND_CENTER ). 
Seules les fentres FORM peuvent servir de fentre de fond. Si l'application est un 
accessoire, c'est le programmeur qui doit crer cette fentre s'il le dsir. (cf. AC_OPEN)
	*ALL_ICON_PTR :	GWVA_APP_OBJ_ALL_ICON_PTR (1 long)
 			Pointeur sur la structure fentre de l'application iconifie.
	*TSR_SIZE :	GWVA_APP_OBJ_TSR_SIZE (1 long)
			Taille mmoire  garder (page de base y compris) pour les applications rsidantes.

GWVA_APP_STRUCT_MOUSE_ZONE 
ou bien
GWVA_APP_STRUCT_MOUSE_ZONES : Cette structure sert  dfinir les rectangles 
qui vont gnrer des vnements souris. Les deux groupes de paramtres facultatifs sont:

 GWVA_APP_STRUCT_MOUSE_ZONES	*1M1FLAG,*1M1X,*1M1Y,*1M1W,*1M1H
&			*2M2FLAG,*2M2X,*2M2Y,*2M2W,*2M2H 

ou bien

 GWVA_APP_STRUCT_ZONE 	*1M1FLAG,*1M1X,*1M1Y,*1M1W,*1M1H 
 GWVA_APP_STRUCT_ZONE	*2M2FLAG,*2M2X,*2M2Y,*2M2W,*2M2H 

	*1M1FLAG:		GWVA_APP_OBJ_M1FLAGS (1 mot)
			MO_ENTER si on veut tre inform de l'entre dans la zone 1
	  ou MO_LEAVE si on veut tre inform de la sortie de la zone 1.
	*1M1X : 		GWVA_APP_OBJ_M1X (1 mot)
			Position horizontale de la zone 1.
	*1M1Y : 		GWVA_APP_OBJ_M1Y (1 mot)
			Position verticale de la zone 1.
	*1M1W : 		GWVA_APP_OBJ_M1W (1 mot)
			Largeur de la zone 1.
	*1M1H : 		GWVA_APP_OBJ_M1H (1 mot)
			Hauteur de la zone 1.
	*2M2FLAG:		GWVA_APP_OBJ_M2FLAGS (1 mot)
			MO_ENTER si on veut tre inform de l'entre dans la zone 2
	  ou MO_LEAVE si on veut tre inform de la sortie de la zone 2.
	*2M2X : 		GWVA_APP_OBJ_M2X (1 mot)
			Position horizontale de la zone 2.
	*2M2Y : 		GWVA_APP_OBJ_M2Y (1 mot)
			Position verticale de la zone 2.
	*2M2W : 		GWVA_APP_OBJ_M2W (1 mot)
			Largeur de la zone 2.
	*2M2H : 		GWVA_APP_OBJ_M2H (1 mot)
			Hauteur de la zone 2.

GWVA_APP_STRUCT_TIMER : C'est le (seul) paramtre dont a besoin le GEM pour les 
EVENT_TIMER.

 GWVA_APP_STRUCT_TIMER		*COUNT

	*COUNT :		GWVA_APP_OBJ_COUNT (1 long)
			Dure minimum (en mili-secondes) entre deux vnements timer. Zro dsactive le 
timer.

GWVA_APP_STRUCT_INIT : Dfinit le pointeur sur la routine d'initialisation de l'appli-
cation.

 GWVA_APP_STRUCT_INIT 		*CUSTOM_INITS 

	*CUSTOM_INITS : 	GWVA_APP_OBJ_CUSTOM_INITS (1 long)
			Adresse de la routine d'initialisation de votre application. Cette routine est appele une 
seule fois, au tout dbut du lancement de l'application, avant que le GEM ne prenne les 
choses en main.

GWVA_APP_STRUCT_MSG : C'est cette structure qui dfinit les routines  appeler lors 
de la rception des messages destins  l'application. 
 
 GWVA_APP_STRUCT_MSG	AC_OPEN,AC_CLOSE,AP_TERM,*ALL_OTHER,*CH_EXIT

Pour toutes ces routines, les paramtres suivants sont passs par le VA:
		d0.w : numro du message. (premier mot du buffer de messages)
		a0.l : pointeur sur le buffer de messages. (16 octets)
		a1.l : pointeur sur le buffer tendu. (256 octets max.)
	AC_OPEN :	 	GWVA_APP_OBJ_AC_OPEN (1 long)
			Ouverture de l'accessoire. C'est gnralement l que l'on ouvre la fentre principale de 
l'application ou que l'on appelle le slecteur de fichier pour commencer le traitement.
	AC_CLOSE : 	 GWVA_APP_OBJ_AC_CLOSE (1 long)
			Fermeture de l'accessoire. Ne faites que les fermetures  spcifiques  votre application, 
le VA se chargera du reste.
	AP_TERM : 	 GWVA_APP_OBJ_AP_TERM (1 long)
			Fermeture et sortie de l'application. d1.w contient la cause de l'AP_TERM (5me mot 
du buffer de message). Vous devez effectuer les fermetures spcifiques  votre 
application, puis sauter au label VISUAL40_END.
	*ALL_OTHER : 	 GWVA_APP_OBJ_ALL_OTHER (1 long)
			Tous les messages inconnus devrons sauter  cette routine. C'est le cas de 
VA_START.
	*CH_EXIT : 	 GWVA_APP_OBJ_CH_EXIT (1 long)
			Cette routine devra traiter le message envoyer par la fin d'une application fille.

GWVA_APP_STRUCT_EVENTS : Cette structure dfinit les routines  appeler lors d'v-
nements reus par EVNT_MULTI.

 GWVA_APP_STRUCT_EVENTS		*EVNT_TIMER,*EVNT_KEYBD,
&			*EVNT_BUTTON,*EVNT_MOUSE1,*EVNT_MOUSE2 

	*EVNT_TIMER : 	 GWVA_APP_OBJ_EVNT_TIMER (1 long)
			Pointeur sur la routine qui traite l'vnement timer. Mettez la routine de gestion des 
Threads (GWVA_WIND_THREAD_TIMER_MANAGEMENT) ici, si vous avez cette 
librairie d'incluse.
	*EVNT_KEYBD :  	 GWVA_APP_OBJ_EVNT_KEYBD  (1 long)
			Pointeur sur la routine qui traite l'vnement clavier qui n'a t consomm par aucun 
autre raccourci clavier (top-menu, menu dans la fentre, table racourcis fentre ou 
formulaire dans le fentre). Les paramtres reus sont :
				d0.w : Code clavier. (octet haut : scancode ; octet bas : code ASCII)
				a0.l : Pointeur sur la structure fentre qui est sous la souris ; zro si aucune 
fentre reconnue par le VA.
	*EVNT_BUTTON :  	 GWVA_APP_OBJ_EVNT_BUTTON  (1 long)
			Pointeur sur la routine qui traite l'vnement click qui n'a t pas reconnu par un menu 
ou une fentre (objet ou click_routine). Les paramtres reus sont :
				d0.w : handle GEM de la fentre sur laquelle se trouve la souris. (retour de 
la fonction WIND_FIND)
				d1.w : position x de la souris lors du click.
				d2.w : position y de la souris lors du click.
				d3.w : bouton de la souris ayant click. (0=gauche; 1=droite; ... milieu)
				d4.w : nombre de click(s).
				a0.l : pointeur sur l'objet application.
	*EVNT_MOUSE1 :  	 GWVA_APP_OBJ_EVNT_MOUSE1  (1 long)
	*EVNT_MOUSE2 :  	 GWVA_APP_OBJ_EVNT_MOUSE2  (1 long)
			vnement dclench par la zone 1 ou 2. 
(cf. GWVA_APP_STRUCT_MOUSE_ZONES) Les paramtres reus sont :
				d0.w : position x de la souris.
				d1.w : position y de la souris.
				d2.w : tat des boutons.
				d3.w : nombre de click(s) ventuels.
				a0.l : pointeur sur l'objet application.


Proprits non apparentes:

La structure de l'objet application contient en plus, des proprits qui ne sont pas apparentes 
dans le .OBJ. Ces proprits sont dfinies par le VA ou initialises par le programmeur lors de 
l'excution de l'application. Il peut aussi tre ncessaire au programmeur d'avoir accs a ces 
proprits pendant l'excution :

	GWVA_APP_OBJ_AP_TFAIL						(1 long)
			Routine qui doit grer le message AP_TFAIL.
	GWVA_APP_OBJ_SHUT_COMPLETED	(1 long)
			Routine qui doit grer le message SHUT_COMPLETED.
	GWVA_APP_OBJ_RESCH_COMPLETED	 (1 long)
			Routine qui doit grer le message RESCH_COMPLETED.
	GWVA_APP_OBJ_AP_DRAG_DROP 	(1 long)
			Routine qui doit grer le message AP_DRAG_DROP.
	GWVA_APP_OBJ_SH_WDRAW 	(1 long)
			Routine qui doit grer le message SH_WDRAW.


		9.1.2 Les vnements

L'application principale reoit les vnements provenant de l'EVNT_MULTI et les messa-
ges systme, qui sont grs par les proprits dfinies ci-dessus.

Rappelons que les messages issus de l'EVNT_MULTI sont grs par les proprits dfinies 
dans GWVA_APP_STRUCT_EVENTS  :
	EVNT_KEYBD	:  	GWVA_APP_OBJ_EVNT_KEYBD
	EVNT_BUTTON	:	GWVA_APP_OBJ_EVNT_BUTTON
	EVNT_MOUSE1	:	GWVA_APP_OBJ_EVNT_MOUSE1
	EVNT_MOUSE2	:	GWVA_APP_OBJ_EVNT_MOUSE2
	EVNT_TIMER	:	GWVA_APP_OBJ_EVNT_TIMER

Les messages systme les plus courants sont grs par les proprits dfinies dans 
GWVA_APP_STRUCT_MSG :
	AC_OPEN		:	GWVA_APP_OBJ_AC_OPEN
	AC_CLOSE		: 	GWVA_APP_OBJ_AC_CLOSE
	AP_TERM		: 	GWVA_APP_OBJ_AP_TERM
	CH_EXIT		: 	GWVA_APP_OBJ_CH_EXIT
	messages inconnus: 	GWVA_APP_OBJ_ALL_OTHER
D'autre part, les messages systme moins habituels sont grs par des des proprits non ap-
parentes :
	AP_TFAIL			:	GWVA_APP_OBJ_AP_TFAIL
	SHUT_COMPLETED	:	GWVA_APP_OBJ_SHUT_COMPLETED
	RESCH_COMPLETED	:	GWVA_APP_OBJ_RESCH_COMPLETED
	AP_DRAG_DROP	:	GWVA_APP_OBJ_AP_DRAG_DROP 
	SH_WDRAW		:	GWVA_APP_OBJ_SH_WDRAW 


		9.1.3 Les mthodes partages

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 minimum, cela peut trs bien 
tre 4 secondes si beaucoup de processus sont en train de travailler  ce moment.

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

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


		9.1.4 Les mthodes internes V.A.

Routines Internes:
VISUAL40_START
GWVA_MAIN_EVENTS_LOOP
GWVA_APP_OBJ_PRG_EVNT_TIMER
GWVA_APP_OBJ_PRG_EVNT_KEYBOARD
GWVA_APP_OBJ_PRG_EVNT_BUTTON
GWVA_APP_OBJ_PRG_EVNT_MOUSE1
GWVA_APP_OBJ_PRG_EVNT_MOUSE2
GWVA_APP_OBJ_PRG_EVNT_MESSAGE
	Ces labels ne devrait pas vous servir sauf pour dbugger les routines de traitement en retour 
des messages concerns, 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
GWVA_CONVERT_KC_IN_OBJECT_IDX
	d0.w	= KC (scan code + ascii)
	a0.l	= adresse 1er objet dans la table de comparaison
	d1.w	= longueur 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+'. vitez ctrl ou alt + touches qui varient avec le shift selon les pays 
autres que A-Z
GWVA_APP_OBJ_PRG_CLEAR_EVNT_BIT
GWVA_APP_OBJ_PRG_ACC_OPEN_VSTATION
GWVA_APP_OBJ_PRG_ACC_CLOSE_VSTATION
GWVA_APP_OBJ_PRG_OPEN_VSTATION
GWVA_APP_OBJ_PRG_CLOSE_VSTATION
	Uniquement pour les accessoires

Labels Internes:
GWVA_APP_RSC_LOAD_FAILED
GWVA_BRANCH_IF_OPEN_WORKSTATION_FAILED
GWVA_BRANCH_IF_APPL_INIT_FAILED
GWVA_OPEN_WORKSTATION_FAILED
GWVA_APPL_INIT_FAILED


	9.2 L'objet "fentre"

L'objet fentre est  la base du concept Visual Assembleur. Il vous permet d'afficher et d'in-
teragir avec l'oprateur dans les rgles du systme.
Cette objet est constitu d'une liste de proprits de base communes  toutes le fentres (sli-
ders, titre ...) et d'un pointeur ventuel sur une structure dcrivant son contenu Visual et com-
ment le traiter (fentre bitmap par exemple : nombre de couleurs ...)
	Il possde une liste d'vnements que vous aurez dclars comme vous intressant plus 
particulirement, et auxquels vous aurez assign des routines (par exemple tre averti d'une 
demande de redimensionnement pour l'ajuster  un critre spcial ...)
Enfin, il peut tre constitu lui mme de plusieurs fentres : exemple une partie formulaire 
sur la gauche et une partie graphique (bitmap) au milieu et une partie totalement "user" en 
bas. Cette fonctionnalit dite "parentale" est disponible grce aux proprits FATHER_PTR, 
FIRT_SON, FIRST_BROTHER qui doivent tre  0.L sauf si la fentre contient au moins un 
fils, par exemple une toolbar  (la possibilit d'avoir une toolbar est implmente en utilisant ce 
principe).
Pour vous aider dans la cration de votre fichier OBJ, il existe pour chaque type de fentre 
un fichier d'exemple prt  tre inclus dans votre source. Ils sont disponibles dans VI-
SUAL41\SAMPLES\OBJECTS\. (cf. paragraphe d'installation)
La dclaration doit se faire ainsi :

objet_fenetre:
	GWVA_WIND_STRUCT_FAMILY	paramtres ventuels
	GWVA_WIND_STRUCT_BASE	paramtres
	GWVA_WIND_STRUCT_DEF_EXTD	paramtres ventuels
	GWVA_WIND_STRUCT_FOCUS	paramtres ventuels
	GWVA_WIND_STRUCT_FIRST_GEOMETRY  paramtres
	GWVA_WIND_STRUCT_CONTENTS	paramtres ventuels
	GWVA_WIND_STRUCT_TYPE	paramtres ventuels
	GWVA_WIND_STRUCT_USER	paramtres ventuels

	; START_EVNT_LIST
	*GWVA_WIND_STRUCT_EVENT	paramtres
	...
	GWVA_WIND_STRUCT_END_LIST


		9.2.1 Les proprits de base

 GWVA_WIND_STRUCT_FAMILY : Cette structure s'ajoute  la liste chane qui donne 
 la dfinition d'une fentre compose ( d'autres fentres ).

 GWVA_WIND_STRUCT_FAMILY     *FATHER_PTR,*FIRST_SON_PTR,*NEXT_BROTHER_PTR

	*FATHER_PTR	GWVA_WIND_OBJ_FATHER_PTR (1 long)
			Pointeur sur sa fentre pre (dans laquelle elle est contenue) ou bien 0.L si pas d'objet 
pre
	*NEXT_BROTHER_PTR	GWVA_WIND_OBJ_NEXT_BROTHER_PTR (1 long)
			Pointeur sur sa fentre frre suivante (de mme niveau) ou bien 0.L si pas d'objet frre
	*FIRST_SON_PTR	GWVA_WIND_OBJ_FIRST_SON_PTR (1 long)
			Pointeur sur 1a premire fentre "enfant" de cette fentre ou bien 0.L si pas d'objet fils

GWVA_WIND_STRUCT_BASE : Cette structure dfinit les proprits fondamentales 
d'une fentre.

 GWVA_WIND_STRUCT_BASE           FLAGS,PROPERTIES,NAME,INFO,*TOPABLE_STATE

	FLAGS:		GWVA_WIND_OBJ_FLAGS (1 mot)
			Ce sont les bits qui dfinissent les gadgets de la fentre, les mmes que le GEM : 
NAME, CLOSER, FULLER, MOVER, INFO, SIZER, UPARROW, DNARROW, 
VSLIDER, LFARROW, RTARROW, HSLIDE, SMALLER.
	Vous pouvez galement vous servir des constantes minimum et maximum prdfinies :
	GWVA_WIN_GADGETS_MINIMUM  = NAME+CLOSER+MOVER
	GWVA_WIN_GADGETS_MAXIMUM = NAME+CLOSER+FULLER+MOVER+INFO
			+SIZER+UPARROW+DNARROW+VSLIDE+LFARROW+RTARROW+HSLIDE
	GWVA_WFORM_GADGETS_BASE    = NAME+CLOSER+FULLER+MOVER
	PROPERTIES:	GWVA_WIND_OBJ_PROPERTIES (1 mot)
			Ce sont les proprits, fixs par vous, le programmeur :
	GWVA_WIN_MASK_HIDETREE : cette fentre ainsi toutes ses filles ne doivent pas tre 
affiches ni traites au niveau vnementiel.
	GWVA_WIN_MASK_AMENU : la fentre contient un menu.
	GWVA_WIN_MASK_CTRLC : supporte clipboard copy CTRL+C
	GWVA_WIN_MASK_CTRLV : supporte clipboard paste CTRL+V)
	GWVA_WIN_MASK_CTRLX : supporte clipboard cut CTRL+X
	GWVA_WIN_MASK_COPYXY : copie automatique des x,y dans FIRST_DX,DY quand 
elle est ferme.
	GWVA_WIN_MASK_AUTODEL : dtruit automatiquement la fentre quand  elle est 
ferme
	GWVA_WIN_MASK_FREEPTR1 : libre automatiquement USER_PTR1 en tant que 
MALLOC quand la fentre est dtruite
	GWVA_WIN_MASK_FREEPTR2 : libre automatiquement USER_PTR2 en tant que 
MALLOC quand la fentre est dtruite
	GWVA_WIN_MASK_FREEDATA : libre automatiquement DATA_PTR en tant  que 
MALLOC quand la fentre bitmap est dtruite
	GWVA_WIN_MASK_FREEPAL : libre automatiquement PAL_PTR en tant que 
MALLOC quand la fentre bitmap est dtruite
	GWVA_WIN_MASK_FREEFORM : libre automatiquement CLONE_FORM_SAVE en 
tant que MALLOC quand la fentre FORM est dtruite
	GWVA_WIN_MASK_FREETOOL : libre automatiquement CLONE_FORM_SAVE 
(structure toolbar) en tant que MALLOC quand la fentre contenant une toolbar clone 
est dtruite.
	Vous pouvez galement vous servir de la constante minimum prdfinie :
		GWVA_WIN_PROPERTIES_BASE = COPYXY+AUTODEL
	Vous pouvez tester et modifier directement les bits avec les constantes correspondantes : 
GWVA_WIN_BIT_HIDETREE, GWVA_WIN_BIT_AMENU, GWVA_WIN_BIT_CTRLC, 
GWVA_WIN_BIT_CTRLV, GWVA_WIN_BIT_CTRLX, GWVA_WIN_BIT_COPYXY, 
GWVA_WIN_BIT_AUTODEL, GWVA_WIN_BIT_FREEPTR1, GWVA_WIN_BIT_FREEPTR2, 
GWVA_WIN_BIT_FREEDATA , GWVA_WIN_BIT_FREEPAL, GWVA_WIN_BIT_FREEFORM , 
GWVA_WIN_BIT_FREETOOL
	NAME : 		GWVA_WIND_OBJ_NAME (1 long)
			Pointeur sur une chane termine par 0 donnant le titre de la fentre ou bien 0.L
	INFO :		GWVA_WIND_OBJ_INFO (1 long)
			Pointeur sur une chane termine par 0 donnant l'info de la fentre ou bien 0.L
	*TOPABLE_STATE	GWVA_WIND_OBJ_TOPABLE_STATE (1 mot)
			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 fentre 
soit "non-toppable" et "non-dtoppable" en mme temps.


GWVA_WIND_STRUCT_DEF_EXTD : Cette structure dfinit d'ventuels structures se-
condaires lies  la fentre.

 GWVA_WIND_STRUCT_DEF_EXTD    *MENU_SPEC_PTR,*ICON_WIND_PTR,*KEY_TABLE

	*MENU_SPEC_PTR :	GWVA_WIND_OBJ_MENU_SPEC_PTR (1 long)
			Pointeur sur un objet menu (GWVA_MENU_STRUCT, cf. la section sur l'lment 
menu).
	*ICON_WIND_PTR :	GWVA_WIND_OBJ_ICON_WIND_PTR (1 long)
			Pointeur sur une structure fentre dcrivant la fentre iconifie. 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 systme. Ce type de fentre ne doit comporter comme 
gadget que la barre de nom.
	ATTENTION : pour toute modification du contenu de la fentre iconifie 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 
effectivement faire le redraw (donc il faut tester son tat avant d'envoyer le redraw, ou 
alors vous prenez le risque que votre redraw ne soit pas envoy si le V.A dtecte qu'elle 
est iconifie. On ne redessine pas une fentre si elle n'est pas visible dans son tat 
d'apparence normal  (i.e : ni namifie ni iconifie)!)
	*KEY_TABLE :	GWVA_WIND_OBJ_KEY_TABLE (1 long)
			Pointeur sur une table de touches et de routines associes pour cette fentre 
prcisment. Le format de cette table est donne au paragraphe 9.10.


GWVA_WIND_STRUCT_FOCUS : Cette structure sert  dfinir le champ texte slection-
n  l'initialisation. On on pourra lire cette valeur pour savoir o est le curseur.

 GWVA_WIND_STRUCT_FOCUS      FOCUSED_OBJECT

	FOCUSED_OBJECT	GWVA_WIND_OBJ_FOCUSED_OBJECT (1 mot)
			Numro de l'objet ayant le focus en premier pour une fentre de type formulaire ou -1 
sinon. Par la suite ce sera l'index de l'objet ayant le focus courant ou -1 si cet objet n'est 
pas dans cette fentre. On voit qu'ainsi une toolbar peut avoir un champs de texte ditable 
ou bien qu'une fentre peut tre constitue de plusieurs formulaires avec un seul curseur 
(focus) dans une seule de ces fentres au mme instant.

GWVA_WIND_STRUCT_FIRST_GEOMETRY :

 GWVA_WIND_STRUCT_FIRST_GEOMETRY      FIRST_DX,FIRST_DY,*FIRST_W,*FIRST_H,
&		               *INTERNAL_MAX_W,*INTERNAL_MAX_H

	FIRST_DX :		 GWVA_WIND_OBJ_FIRST_DX (1 mot)
			Premire coordonne x externe de la fentre, ventuellement par rapport  sa mre si 
elle en a une (initialisez  GWVA_WIN_H_CENTER pour centrer horizontalement) non 
modifi par V.A
	FIRST_DY :	 	GWVA_WIND_OBJ_FIRST_DY (1 mot)
			Premire coordonne y externe de la fentre, ventuellement par rapport  sa mre si 
elle en a une (initialisez  GWVA_WIN_V_CENTER pour centrer) non modifi par V.A
	*F	IRST_W :		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)
	*FIRST_H :		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 fentre sans vous en avertir ~64*64 pixels
	*INTERNAL_MAX_W :	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.
	*INTERNAL_MAX_H :	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 recalcule en 
pixel par le V.A..
	Attention : la hauteur de la toolbar n'est pas  prendre en compte.
	Attention : tout sera de toute faon vrifi  l'initialisation de la fentre (taille infrieur  
celle du bureau et position dans le bureau).

GWVA_WIND_STRUCT_CONTENTS : Cette structure sert  dfinir la position du con-
tenu de la fentre.

 GWVA_WIND_STRUCT_CONTENTS      *1CONTENTS_DX,*1CONTENTS_DY,
&                               *2SLIDER_V_POS,*2SLIDER_V_SIZE,
&                               *2SLIDER_H_POS,*2SLIDER_H_SIZE

	*1CONTENTS_DX :	GWVA_WIND_OBJ_CONTENTS_DX (1 mot)
	*1CONTENTS_DY :	GWVA_WIND_OBJ_CONTENTS_DY (1 mot)
			Dcalage du coin suprieur gauche du contenu de la fentre par rapport  
GWVA_WIND_OBJ_INTERNAL_DX et GWVA_WIND_OBJ_INTERNAL_DY.
	*2SLIDER_V_POS :	GWVA_WIND_OBJ_SLIDER_V_POS (1 mot)
			Position verticale du slider de 1  1000
	*2SLIDER_V_SIZE :	GWVA_WIND_OBJ_SLIDER_V_SIZE (1 mot)
			Taille verticale du slider de 1  1000 (-1 : taille minimale)
	*2SLIDER_H_POS :	GWVA_WIND_OBJ_SLIDER_H_POS (1 mot)
			Position horizontale du slider de 1  1000
	*2SLIDER_H_SIZE :	GWVA_WIND_OBJ_SLIDER_H_SIZE (1 mot)
			Taille horizontale du slider de 1  1000 (-1 : taille minimale)


GWVA_WIND_STRUCT_TYPE : Cette structure sert  dfinir le type de fentre et la 
structure dfinissant cette fentre.

 GWVA_WIND_STRUCT_TYPE       TYPE,SPEC_PTR

	OBJ_TYPE :	GWVA_WIND_OBJ_TYPE (1 mot)
	GWVA_WIND_TYPE_CUSTOM : fentre custom sans rien  l'intrieur, juste les bords 
tous ses redraw seront grs par le programmeur.
	GWVA_WIND_TYPE_TEXT : fentre pour afficher du texte.
	GWVA_WIND_TYPE_FORM : fentre contenant un formulaire.
	GWVA_WIND_TYPE_BITMAP : fentre contenant une image.
	GWVA_WIND_TYPE_UNDEF : fentre ne contenant rien, pour crer par exemple une 
fentre qui en contient plusieurs autres.
	Pour une fentre contenant une toolbox, faites un formulaire.
	OBJ_SPEC_PTR :	GWVA_WIND_OBJ_SPEC_PTR (1 long)
			Pointeur sur une structure spcifique en fonction du type de fentre.

GWVA_WIND_STRUCT_USER : Cette structure sert  dfinir les ventuels pointeurs que 
l'utilisateur veut utiliser en relation avec cette fentre.

 GWVA_WIND_STRUCT_USER       *USER_PTR1,*USER_PTR2

	*USER_PTR1 :	GWVA_WIND_OBJ_USER_PTR1 (1 long)
			Premier pointeur pour usage du programmeur.
	*USER_PTR2 :	GWVA_WIND_OBJ_USER_PTR2 (1 long)
			Second pointeur pour usage du programmeur.


*GWVA_WIND_STRUCT_EVENT : Cette structure sert  dfinir la liste des vnements 
dont souhaite tre averti le programmeur. Si vous n'avez pas besoin d'tre avertti d'aucun 
vnement, ne mettez aucune STRUCT_EVENT, seulement STRUCT_END_LIST. La liste 
est constitue d'autant de structures que d'vnements ncessaires. La liste commence  
l'offset GWVA_WIND_OBJ_START_EVNT_LIST. NB: Les labels d'offset donns ci-aprs 
sont par rapport  chaque STRUCT_EVENT.

 *GWVA_WIND_STRUCT_EVENT      EVENT,ROUTINE

	EVENT :		GWVA_WIND_OBJ_EVNT_LIST_EVNT (1 mot)
			C'est le numro du message dont on souhaite tre averti (cf. 9.2.2 ci-aprs pour la liste 
des vnements). Il doit tre additionn soit de WM_AFTER si on veut tre averti aprs 
que l'vnement soit ralis, soit de WM_BEFORE si on veut tre averti avant que 
l'vnement soit ralis.
	ROUTINE :		GWVA_WIND_OBJ_EVNT_LIST_ROUTINE (1 long)
			C'est le sous-programme qui est xcut lorsque l'vnement arrive. Si on est averti de 
l'vnement avant (par WM_BEFORE), on peut revoyer d7.w=-1 pour que 
l'vnement ne soit pas excut.

GWVA_WIND_STRUCT_END_LIST : Cette structure ne demande aucun paramtre. Elle 
indique simplement la fin de l'EVENT_LIST. Si vous n'avez pas besoin d'tre avertti d'aucun 
vnement, ne mettez aucune STRUCT_EVENT, seulement STRUCT_END_LIST.

 GWVA_WIND_STRUCT_END_LIST


Proprits non apparentes:

La structure de l'objet fentre contient en plus, des proprits qui ne sont pas apparentes 
dans le .OBJ. Ces proprits sont dfinies par le VA ou initialises par le programmeur lors de 
l'excution de l'application. Il peut aussi tre ncessaire au programmeur d'avoir accs a ces 
proprits pendant l'excution :

GWVA_WIND_OBJ_STATUS	(1 mot)
	Ce sont les bits de status, modifis par le V.A au cours de l'excution
	GWVA_WIN_BIT_FULL : 1=fulled.
	GWVA_WIN_BIT_OPEN : 0=ferme, 1=ouverte.
	GWVA_WIN_BIT_CURS : 1=curseur du champ ditable affich.
	GWVA_WIN_BIT_ICON : 1=iconifie.
	GWVA_WIN_NAMIFIED : 1=fentre rduite  un titre (et une info).
	NB: les bits 8  15 sont libres pour le programmeur.
GWVA_WIND_OBJ_MENU_HEIGHT	(1 mot)
	Hauteur du menu (calcul par le V.A) 0.w si aucun.
GWVA_WIND_OBJ_FOCUSED_OBJ_CURSOR_POS	(1 mot)
	Position du curseur : recalcule par le V.A.
GWVA_WIND_OBJ_GEM_HANDLE	(1 mot)
	Handle GEM. 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 fentre normale.
GWVA_WIND_OBJ_INTERNAL_DX	(1 mot)
GWVA_WIND_OBJ_INTERNAL_DY	(1 mot)
	Ces deux variables donnent la position du premier pixel utile de la fentre (par rapport  sa 
mre si elle en a  une) en tenant compte d'un ventuel menu dans la fentre. Ce sont des 
positions relatives et doivent donc tre traites pour donner des positions absolues 
(fonction GWVA_WIND_OBJ_PRG_GET_ABSOLUTE_XY).
GWVA_WIND_OBJ_INTERNAL_W	(1 mot)
GWVA_WIND_OBJ_INTERNAL_H	(1 mot)
	Ces deux variables donnent la taille interne utile de la fentre.


		9.2.2 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 dtruire pour de bon !
Si vous optez pour tre prvenu avant, vous ajouterez WM_BEFORE  votre numro de 
message et vous pourrez dans ce cas prcis empcher l'action en renvoyant un d7.w ngatif 
(-1) ou bien autoriser l'action 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 : ajoutez 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 allocation 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 ouverture.

	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 rectangle 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 inclus  re-dessiner 
(dj clippe).

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


		9.2.3 Les mthodes partages

Remarque : toutes les fonctions qui prennent en entre dans a0 un pointeur sur une fentre 
sauvegardent ce pointeur tout du long du traitement et vous le retrouverez en sortie.

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 ventuel ou 0.

	Retourne un pointeur sur la structure Visual de la fentre dont le handle 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_ICONIFIED
	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
			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/profondeur termine par -1

	Cette fonction permet de re-dessiner tout ou partie du formulaire contenue dans une fentre.
Dans a0.l vous aurez soin de passer un pointeur sur une fentre NON iconifie sinon il n'y 
aura pas de redraw. Si vous voulez re-dessiner une fentre 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 formu-
laire  partir de sa racine.
	d2.w permet de localiser le redraw. d2 = -1 permet par exemple un redraw 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 routines de 
redraw, respect des autres messages de redraw, etc. La contrepartie, c'est la longueur des buf-
fers de messages du GEM. Il ne faut pas que vos listes soient trop grandes, car cela surchar-
gerait le systme et le bloquerait.
	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_GET_EXTERNAL_POSITION
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie		d0.w, d1.w, d2.w, d3.w

	Donne la position externe de la fentre (d0,d1) et sa taille externe (d2,d3) calcule  partir 
de la taille interne en ajoutant le menu de fentre ventuel et les gadgets GEM.

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 du programmeur (cf. 
USR_PTR1 & 2 et ceux pour les fentres Bitmap)  n'utiliser qu'en cas de destruction de la fe-
ntre. 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 Visual Assembleur.
	Les codes d'erreur possibles sont ceux des mthode GWVA_WIND_OBJ_PRG_CREA-
TE_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 ouver-
te 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_OPENED+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 DOIVENT AVOIR UNE 
TAILLE MINIMALE A L'OUVERTURE ; SINON LE GEM LES REDIMMENSIONNE A 
SA CONVENANCE AU PREMIER 'MOVE'

GWVA_WIND_OBJ_PRG_UPDATE_TOOLB_AND_FORM_POS
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Actualise les positions des objets d'une fentre (formulaire, toolbar, menu), 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, au niveau du formulaire ou de la tool-
bar.

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 fentre 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_TOP_ONE_WIND
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

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

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_CREATE_ONE_WIND
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie		d7.w	= 0 si pas d'erreur

	Cration d'une fentre GEM  partir de la structure Visual. Pour crer une fentre Visual, 
utilisez imprativement la mthode : GWVA_APP_OBJ_CREATE_WINDOW
	Gnre le message WM_GWVA_NEWIND (BEFORE et AFTER).
	Les codes d'erreur possibles sont :
	GWVA_ERROR_WIND_GEM_CREATE : cration impossible
	GWVA_ERROR_WIND_USER_CANCEL_CREATE : cration impossible sur retour du 
message WM_GWVA_NEWIND+WM_BEFORE.

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 fentre 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_UNAMIFY_ONE_WIND
	Entre		a0.l	= pointeur structure fentre Visual,
	Sortie

	Namification et d-namification de la fentre Visual (ne fait plus apparatre 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 (ti-
tre, 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 Visual 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 bitmap V.A. a un nombre de 
couleur diffrent de celui disponible en affichage.
	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_BEFORE.

GWVA_WIND_OBJ_PRG_CALCULATE_PVSLIDE
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

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

GWVA_WIND_OBJ_PRG_CALCULATE_HVSLIDE
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

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

GWVA_WIND_OBJ_PRG_CALCULATE_WHSLIDE
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

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

GWVA_WIND_OBJ_PRG_CALCULATE_PHSLIDE
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

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

GWVA_WIND_OBJ_PRG_CLONE_ONE_WIND
	(NB: seulement avec MDL_GWVA_WIND_CLONING)
	Entre		a0.l	= pointeur structure fentre Visual  cloner.
			d0.l	= champs de bit donnant les pointeurs des structures  reloger.
			d1.l	=  taille des donnes de la fentre  cloner.
	Sortie		a0.l	= pointeur sur la fentre clone.
			d7.w	= 0 si pas d'erreur, GWVA_ERROR_GENERIC sinon.

	Cette fonction effectue le clonage complet d'une fentre : rservation de la zone mmoire, 
recopie des donnes originales et relocation des pointeurs souhaits.
	Le paramtre d0.l est un champ de bit dsignant les pointeurs  reloger, par rapport  
l'adresse de la fentre clone (le nom de la constante est explicite) : 
GWVA_WIN_CLONE_MASK_FATHER_PTR
GWVA_WIN_CLONE_MASK_NEXT_BROTHER_PTR
GWVA_WIN_CLONE_MASK_FIRST_SON_PTR
GWVA_WIN_CLONE_MASK_NAME
GWVA_WIN_CLONE_MASK_ICON_WIND_PTR
GWVA_WIN_CLONE_MASK_MENU_SPEC_PTR
GWVA_WIN_CLONE_MASK_KEY_TABLE
GWVA_WIN_CLONE_MASK_SPEC_PTR
GWVA_WIN_CLONE_MASK_USER_PTR1
GWVA_WIN_CLONE_MASK_USER_PTR2
GWVA_WIN_CLONE_MASK_DATA_PTR
GWVA_WIN_CLONE_MASK_PAL_PTR
GWVA_WIN_CLONE_MASK_SAVED_FORM_GIVEN
	Indique que le pointeur sur la sauvegarde originale du formulaire est dans le champ 
GWVA_WFORM_OBJ_CLONE_FORM_SAVE. Il n'y aura pas alors de relocation. 
Sinon, la valeur du champ est considr comme un offset  reloger
GWVA_WIN_CLONE_MASK_DEF_OBJ_PTR_STRUCT
	Demande au V.A. de reloger les pointeurs de toutes les structures des objets des fentres 
formulaires.
GWVA_WIN_CLONE_MASK_RECURSE
	Demande que la relocation se fasse aussi sur les fentres filles et soeurs, de faon rcursive.

GWVA_WIND_OBJ_PRG_RELOCATE_WIND
	(NB: seulement avec MDL_GWVA_WIND_CLONING)
	Entre		a0.l	= pointeur sur la structure d'une fentre  reloger
			d0.l	= champ de bit donnant les pointeurs des structures  reloger
	Sortie		d7.w	= 0 si pas d'erreur, , GWVA_ERROR_GENERIC sinon.


		9.2.4 Les mthodes internes V.A.

GWVA_WIND_OBJ_PRG_ONTOP_ONE_WIND
GWVA_WIND_OBJ_PRG_NEWTOP_ONE_WIND
GWVA_WIND_OBJ_PRG_UNTOP_ONE_WIND
GWVA_WIND_OBJ_PRG_SIZE_ONE_WIND
GWVA_WIND_OBJ_PRG_MOVE_ONE_WIND
GWVA_APP_OBJ_CREATE_ICONIFIED_WINDOW
GWVA_WIND_OBJ_PRG_WM_REDRAW
GWVA_WIND_OBJ_PRG_INTERSEC_REC
GWVA_WIND_OBJ_PRG_WM_TOPPED
GWVA_WIND_OBJ_PRG_WM_CLOSED
GWVA_WIND_OBJ_PRG_WM_FULLED
GWVA_WIND_OBJ_PRG_WM_ARROWED
GWVA_WIND_OBJ_PRG_WM_HSLID
GWVA_WIND_OBJ_PRG_WM_VSLID
GWVA_WIND_OBJ_PRG_WM_SIZED
GWVA_WIND_OBJ_PRG_WM_MOVED
GWVA_WIND_OBJ_PRG_WM_NEWTOP
GWVA_WIND_OBJ_PRG_WM_UNTOPPED
GWVA_WIND_OBJ_PRG_WM_ONTOP
GWVA_WIND_OBJ_PRG_WM_BOTTOM
GWVA_WIND_OBJ_PRG_WM_ICONIFY
GWVA_WIND_OBJ_PRG_WM_UNICONIFY
GWVA_WIND_OBJ_PRG_WM_ALLICONIFY
GWVA_WIND_OBJ_PRG_WM_TOOLBAR
GWVA_JUMP_TO_USER_EVENT_ROUTINE
GWVA_JUMP_TO_USER_REDRAW_ROUTINE
	Routines internes.


	9.3 L'objet "fentre texte"

Une fentre texte doit tre dfinie ainsi :

spec_fenetre_texte:
 	GWVA_WTEXT_STRUCT_BASE	paramtres

		9.3.1 Les proprits

GWVA_WTEXT_STRUCT_BASE : C'est cette structure qui dfinit les proprits fonda-
mentales de la fentre texte.

 GWVA_WTEXT_STRUCT_BASE	NB_COLONNES,NB_LIGNES,*FNT_SIZE

	NB_COLONNES :	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)
	NB_LIGNES :	GWVA_WTEXT_OBJ_NB_LIGNES (1 mot)
			Hauteur de la fentre en nombre de caractre.
	*FNT_SIZE :	GWVA_WTEXT_OBJ_FNT_SIZE (1 mot)
			Taille voulue de la font systme en pixels (peut tre modifi par le Visual si la taille 
n'est pas disponible).

Proprits non apparentes:

La structure de l'objet fentre contient en plus, des proprits qui ne sont pas apparentes 
dans le .OBJ. Ces proprits sont dfinies par le VA ou initialises par le programmeur lors de 
l'excution de l'application. Il peut aussi tre ncessaire au programmeur d'avoir accs a ces 
proprits pendant l'excution :

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 long)
	Pointeur sur le buffer de texte rserv par le Visual.
	Dans ce buffer, le texte est stock  la suite, sans line-feed, ni carriage return.

		9.3.2 Les mthodes partages

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_WINDOW
	Entre		a0.l	= pointeur structure fentre Visual.
	Sortie

	Actualise l'affichage du buffer de la fentre texte.

		9.3.3 Les mthodes internes V.A.

GWVA_WTEXT_OBJ_CUR_BUF_COL	(1 mot)
GWVA_WTEXT_OBJ_CUR_BUF_LIGN	(1 mot)
GWVA_WTEXT_OBJ_CUR_AFF_COL	(1 mot)
GWVA_WTEXT_OBJ_CUR_AFF_LIGN	(1 mot)
GWVA_WTEXT_OBJ_BUF_COLONNE	(1 mot)
GWVA_WTEXT_OBJ_BUF_LIGNE	(1 mot)
GWVA_WTEXT_OBJ_AFF_COLONNE	(1 mot)
GWVA_WTEXT_OBJ_AFF_LIGNE	(1 mot)
	Variables internes.

GWVA_WTEXT_OBJ_PRG_CALC_PARAM_TEXT
GWVA_WTEXT_OBJ_PRG_WRITE_TEXT_IN_WINDOW
GWVA_WIND_OBJ_PRG_ARROWED_WINDOW_TEXT
GWVA_WIND_OBJ_PRG_HSLIDE_WINDOW_TEXT
GWVA_WIND_OBJ_PRG_VSLIDE_WINDOW_TEXT
GWVA_WTEXT_OBJ_PRG_SCROLL_WINDOW
GWVA_WTEXT_OBJ_PRG_CALC_PARAM_TEXT2
GWVA_WTEXT_OBJ_PRG_SCROLL_VERT
GWVA_WTEXT_OBJ_PRG_SCROLL_HORI
GWVA_WTEXT_OBJ_PRG_CALCULATE_PHSLIDE2
GWVA_WTEXT_OBJ_PRG_CALCULATE_PVSLIDE2
	Routines internes.


	9.4 Les objets "fentre formulaire"

Cette fentre formulaire doit contenir une arborescence constitue d'objets graphiques. C'est 
galement ainsi que sont fabriques les toolbar et les toolbox :
Elle doit tre dclar ainsi :

spec_fenetre_formulaire:
	GWVA_WFORM_STRUCT_BASE   paramtres
	GWVA_WFORM_STRUCT_CLONE  paramtres ventuels
	; start_obj_list
	GWVA_WFORM_STRUCT_OBJ    paramtres
	...
	GWVA_WFORM_STRUCT_END_LIST


		9.4.1 Les proprits

GWVA_WFORM_STRUCT_BASE : Cette structure dfinit les proprites fondamentales 
de la fentre formulaire.

 GWVA_WFORM_STRUCT_BASE   IDX,*CLICK_ROUTINE

	IDX :		GWVA_WFORM_OBJ_FORM_IDX (1 mot)
			Numro de l'arbre servant de dessin au formulaire.
	*CLICK_ROUTINE :	GWVA_WFORM_OBJ_CLICK_ROUTINE (1 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_STRUCT_CLONE : Cette structure prpare la fentre  tre clone. 
Pour plus d'information sur ces champs, rfrez-vous  l'exemple 
VISUAL41\SAMPLES\MULTIDOC\FORM\PROJECT.OBJ

 GWVA_WFORM_STRUCT_CLONE  *1IS_CLONE_FORM,*1CLONE_MAIN_PTR*CLONE_FORM_SAVE

	*1IS_CLONE_FORM :	GWVA_WFORM_OBJ_IS_CLONE_FORM (1 mot)
			Champ de bits servant  la sauvegarde automatique des objets d'un formulaire associ 
 une fentre. 	Ce champ est utilis par le V.A. lors d'applications se servant d'un mme 
formulaire dans plusieurs fentres simultanment.
	Dfinition:
	GWVA_WFORM_SAVE_MASK_TEDINFO
	GWVA_WFORM_SAVE_MASK_BITBLK
	GWVA_WFORM_SAVE_MASK_ICONBLK
	GWVA_WFORM_SAVE_MASK_CICONBLK
	GWVA_WFORM_SAVE_MASK_APPLBLK:
		Sauve les structures correspondantes.
	GWVA_WFORM_SAVE_MASK_STATE : 
		sauve l'tat des objets et le caractre des BOXCHAR.
	GWVA_WFORM_SAVE_MASK_TEXT :
		sauve les textes non ditables sauf le caractre des icones.
	GWVA_WFORM_SAVE_MASK_FTEXT : 
		sauve les textes ditables (texte + mise en forme + champ de saisie).
	GWVA_WFORM_SAVE_MASK_STRUCT : 
		sauve les structures des objets Visual.
	Vous pouvez accder directement au bit correspondant par les constantes suivantes :
	GWVA_WFORM_SAVE_BIT_STATE
	GWVA_WFORM_SAVE_BIT_TEDINFO
	GWVA_WFORM_SAVE_BIT_TEXT
	GWVA_WFORM_SAVE_BIT_FTEXT
	GWVA_WFORM_SAVE_BIT_BITBLK
	GWVA_WFORM_SAVE_BIT_ICONBLK
	GWVA_WFORM_SAVE_BIT_CICONBLK
	GWVA_WFORM_SAVE_BIT_APPLBLK
	GWVA_WFORM_SAVE_BIT_STRUCT
	*1CLONE_MAIN_PTR :	GWVA_WFORM_OBJ_CLONE_MAIN_PTR (1 long)
			Pointeur sur un mot long pointant lui mme en permanence sur la structure de la 
fentre clone active. Le pointeur point par 
GWVA_WFORM_OBJ_CLONE_MAIN_PTR est  mettre  zro  l'initialisation du 
programme. Ce mot long est utilis par le V.A. lors d'applications utilisant le mme 
formulaire dans plusieurs fentres simultanment.
	*CLONE_FORM_SAVE :	GWVA_WFORM_OBJ_CLONE_FORM_SAVE (1 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_MASK_FREEFORM & FREETOOL)

*GWVA_WFORM_STRUCT_OBJ : Cette structure sert  dfinir la liste des objets conte-
nus dans l'aborescence du formulaire dont vous voulez recevoir certains vnements. Si vous 
n'avez besoin d'tre avertti d'aucun vnement lis  ces objets, ne mettez aucune 
STRUCT_OBJ, seulement STRUCT_END_LIST. La liste commence  l'offset 
GWVA_WFORM_OBJ_START_OBJ_LIST. NB: Les labels d'offset donns ci-aprs sont 
par rapport  chaque STRUCT_OBJ.

 *GWVA_WFORM_STRUCT_OBJ    IDX,TYPE,PTR_STRUCT,*SHORTCUT

	IDX :		GWVA_WFORM_OBJ_DEF_OBJ_NUM (1 mot)
			Index de l'objet.
	TYPE :		GWVA_WFORM_OBJ_DEF_OBJ_TYPE (1 mot)
			Type de l'objet, parmis :
	GWVA_FORM_WIND_OBJECT_TEXT : objet non slectionnable. ( champs de texte, 
ditable ou non)
	GWVA_FORM_WIND_OBJECT_BUTTON : objet slectionnable. (bouton)
	Attention : un bouton exit ou touchexit sera re-dessin dslectionn s'il est enfonc.
	GWVA_FORM_WIND_OBJECT_MENU_POPUP : menu popup.
	GWVA_FORM_WIND_OBJECT_RADIO_BUTTON : bouton radio. NB : mettre comme 
numro d'objet celui du pre des boutons radio.
	GWVA_FORM_WIND_OBJECT_ROLL_POPUP : roll over popup object (pointeur sur 
une structure du popup associ) : pas encore support.
	GWVA_FORM_WIND_OBJECT_ROLL_RADIO_B : roll over radio-button object 
(pointeur sur structure du radio bouton associ) : pas encore support.
	GWVA_FORM_WIND_OBJECT_PROGRESS_BAR : percent-progress 	graphic object.
	GWVA_FORM_WIND_OBJECT_SLIDER : slider graphic object:
	GWVA_FORM_WIND_OBJECT_EQUIV : click equivalent object.
	NB : depuis le V.A. 4.2, il existe des objets dits customs. Vous pouvez utiliser ces objets 
particuliers en donnant son type. (cf. 9.4.6 les objets customs)
	PTR_STRUCT :	GWVA_WFORM_OBJ_DEF_OBJ_PTR_STRUCT (1 long)
			Pointeur sur la structure de l'objet.
	*OBJ_SHORTCUT :	GWVA_WFORM_OBJ_DEF_OBJ_SHORTCUT (1 mot)
			Le raccourci-clavier quivalent  un click sur cet objet. 0 si aucun. (cf. section sur les 
raccourci-claviers.)

GWVA_WFORM_STRUCT_END_LIST : Cette structure ne demande aucun paramtre. 
Elle indique simplement la fin de l'OBJ_LIST. Si vous n'avez besoin d'tre avertti d'aucun 
vnement li  ces objest, ne mettez aucune STRUCT_OBJ, seulement 
STRUCT_END_LIST.

 GWVA_WFORM_STRUCT_END_LIST


Proprits non apparentes:

La structure de l'objet fentre formulaire contient en plus, des proprits qui ne sont pas ap-
parentes dans le .OBJ. Ces proprits sont dfinies par le VA ou initialises par le program-
meur lors de l'excution de l'application. Il peut aussi tre ncessaire au programmeur d'avoir 
accs a ces proprits pendant l'excution :

GWVA_WFORM_OBJ_FORM_PTR	(1 long)
	Adresse du formulaire calcule par le V.A.
GWVA_WFORM_OBJ_L_SCULPT	(1 mot)
	Largeur additionnelle  gauche.
GWVA_WFORM_OBJ_T_SCULPT	(1 mot)
	Largeur additionnelle en haut.
GWVA_WFORM_OBJ_R_SCULPT	(1 mot)
	Largeur additionnelle  droite.
GWVA_WFORM_OBJ_B_SCULPT	(1 mot)
	Largeur additionnelle en bas.
GWVA_WFORM_OBJ_W_SCULPT	(1 mot)
	Largeur en tenant compte du 'relief'.
GWVA_WFORM_OBJ_H_SCULPT	(1 mot)
	Hauteur en tenant compte du 'relief'.
GWVA_WFORM_OBJFORMLIST_LENGTH	(1 mot)
	Taille de la structure = 10 octets.

		9.4.2 Les mthodes


Voici les mthodes pour ces objets.
Les trois premires concernent la sauvegarde, la restauration et la copie du contenu d'un 
formulaire, en vu soit de l'utilisation du mme formulaire dans plusieurs fentres, soit de l'im-
plantation d'une fonction Annuler dans un formulaire. L'utilisation de ces mthodes pour ces 
deux cas peut tre vu respectivement dans VISUAL41\SAMPLES\MULTIDOC\FORM\ et 
dans VISUAL41\SAMPLES\START\, mais surtout dans le programme LOOK

GWVA_WFORM_OBJ_PRG_SAVE_FORM
	(NB: seulement avec MDL_MULTIFORM)
	Entre		d0.w	= numro de l'arbre dans le formulaire
			d1.w	= paramtrage de la sauvegarde (cf. IS_CLONE_FORM dans 
					GWVA_WFORM_STRUCT_CLONE)
			a0.l	= 0 (MALLOC automatique) ou pointeur sur un prcdent champ
					de sauvegarde
			a1.l	= si le bit GWVA_WFORM_SAVE_BIT_STRUCT 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 sinon.
	
	Le paramtrage de la sauvegarde (d1.w) est donn par :
	GWVA_WFORM_SAVE_MASK_TEDINFO
	GWVA_WFORM_SAVE_MASK_BITBLK
	GWVA_WFORM_SAVE_MASK_ICONBLK
	GWVA_WFORM_SAVE_MASK_CICONBLK
	GWVA_WFORM_SAVE_MASK_APPLBLK:
		Sauve les structures correspondantes.
	GWVA_WFORM_SAVE_MASK_STATE : 
		sauve l'tat des objets et le caractre des BOXCHAR.
	GWVA_WFORM_SAVE_MASK_TEXT :
		sauve les textes non ditables sauf le caractre des icones.
	GWVA_WFORM_SAVE_MASK_FTEXT : 
		sauve les textes ditables (texte + mise en forme + champ de saisie).
	GWVA_WFORM_SAVE_MASK_STRUCT : 
		sauve les structures des objets Visual.

GWVA_WFORM_OBJ_PRG_RESTORE_FORM
	(NB: seulement avec MDL_MULTIFORM)
	Entre		d0.w	= numro de l'arbre.
			d1.w	= paramtrage de la sauvegarde. (cf. IS_CLONE_FORM dans 
					GWVA_WFORM_STRUCT_CLONE)
			a0.l	= pointeur sur le champ de sauvegarde.
			a1.l	= si le bit GWVA_WFORM_SAVE_BIT_STRUCT 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 sinon

 Restauration d'un formulaire prcdemment sauvegard par 
GWVA_WFORM_OBJ_PRG_SAVE_FORM. On peut ne restaurer qu'une partie des infor-
mations du formulaire sauv.

GWVA_WFORM_OBJ_PRG_COPY_SAVED_FORM
	(NB: seulement avec MDL_MULTIFORM)
	Entre		a0.l	= pointeur sur le champ de sauvegarde source.
			a1.l	= 0 (malloc automatique) ou adresse d'un buffer de destination.
	Sortie		a0.l	= pointeur de la sauvegarde de destination.
			d7.w	= code d'erreur ou 0 sinon.

	Copie d'une sauvegarde de formulaire prcdemment sauvegard par 
GWVA_WFORM_OBJ_PRG_SAVE_FORM.

GWVA_WFORM_OBJ_PRG_OBJC_EDIT:
	Activation	PATCH_WIND_FORM_CUSTOM_EDITABLE_TEXT
	Entre		a0.l	= adresse d'un arbre ressource
			d0.w	= numros de l'objet qui  le curseur d'dition
			d1.w	= touche  traiter (venant d'un form_keyb)
			d2.w	= position du curseur dans le champs
			d3.w 	= mode
	Sortie		d0.w	= 0 : pas d'erreur, 1 : erreur
			int_out	= d0.w
 			int_out+2	= nouvelle position du curseur

	Cette fonction est un patch de la fonction AES, OBJC_EDIT. La paramtres en entre 
sont les mmes que pour la fonction systme, ainsi que les sorties.
	Ce patch permet au curseur de fonctionner sur des champs ditables contenant un texte en 
petite police, ainsi que d'amliorer sensiblement le redraw du curseur.

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 formulaires. Pour les avoir, 
il faut dcrire l'objet dans la liste des objets du formulaire 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, boutons 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 La programmation multi-formulaire

Les routines du multi-formulaire permettent de sauvegarder l'aspect d'un formulaire  un 
instant donn pour le restaurer  un autre moment.
En utilisant ce principe, on peut n'avoir qu'un seul formulaire dans son ressource et jongler 
avec, pour par exemple, avoir plusieurs fentres qui l'affichent en mme temps. Cela peut aus-
si tre utile si l'on veut sauvegarder l'tat d'un formulaire pour le restaurer dans le cas d'un 
"Annule Changements".
Si vous dsirez crer une fentre formulaire clonable, vous devez effectuer les tapes sui-
vantes :
Dans le .OBJ :
- crer une structure fentre dont les champs (pointeurs sur le nom, sur une toolbar, 
sur un menu, sur l'info, sur l'icne ... et biensur sur la structure spcifique  fentre !) 
soient dfinis relativement  cette structure. (une soustraction du pointeur de dbut)
- la structure spcifique doit avoir les champs GWVA_WFORM_OBJ_IS_CLO-
NE_FORM, et GWVA_WFORM_OBJ_CLONE_MAIN_PTR initialiss.
- GWVA_WFORM_OBJ_CLONE_MAIN_PTR ne sera pas relatif, et pointera sur 
un mot long unique pour cette famille de clone pour toute votre application.
- GWVA_WFORM_OBJ_CLONE_FORM_SAVE est initialis avec l'adresse de 
la sauvegarde du formulaire. Gnralement, ce pointeur est initialis  la cration de 
la fentre. Par consquent, ce champ est initialement mis  0.

Dans le .S :
-  l'initialisation du programme, une sauvegarde du contenu de la fentre  cloner 
doit tre faite (structure et graphique) (GWVA_WFORM_OBJ_PRG_SA-
VE_FORM), et on doit mettre  zro le pointeur point par 
GWVA_WFORM_OBJ_CLONE_MAIN_PTR.
-  chaque cration d'une fentre clone, on doit rserver (MALLOC) une zone m-
moire correspondant  la taille de la structure dfinissant la fentre, recopier la struc-
ture de base dans cette zone, reloger les pointeurs de cette nouvelle structure, effec-
tuer une copie de la sauvegarde initiale (GWVA_WFORM_OBJ_PRG_CO-
PY_SAVED_FORM) et ainsi initialiser le pointeur 
GWVA_WFORM_OBJ_CLONE_FORM_SAVE de la fentre clone cre.
- on peut maintenant crer/ouvrir cette nouvelle fentre que l'on vient de dfinir ...

		9.4.5 Les objets d'une fentre formulaire

			9.4.5.1 L'objet texte

Cette structure est lie  tous les objets graphiques non slectionnables. 	Aucune proprit 
pour cet objet. Seule la liste des vnements  surveiller peut tre dfinie.

objet_texte:
	; OBJ_START_EVNT_LIST
	GWVA_WFORM_STRUCT_OBJ_EVENT	    paramtres
	...
	GWVA_WFORM_STRUCT_OBJ_END_LIST

			      9.4.5.1.1 Les proprits

GWVA_WFORM_STRUCT_OBJ_EVENT : Cette structure sert  dfinir un vnement 
dans la liste des vnements cet l'objet. La liste commence  l'offset 
GWVA_FORM_TXT_OBJ_START_EVNT_LIST. NB: Les labels d'offset donns ci-aprs 
sont par rapport  chaque STRUCT_OBJ_EVENT.

 GWVA_WFORM_STRUCT_OBJ_EVENT	EVNT,ROUTINE

	EVNT :		GWVA_WFORM_STRUCT_OBJ_EVENT_EVNT (1 mot)
		Les vnements possibles sont :
	. 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.
	ROUTINE :		GWVA_WFORM_STRUCT_OBJ_EVENT_ROUTINE (1 long)
			Lors de l'apparition de l'vnement, le V.A. appelle la routine avec les paramtres :
 		d0.w	= numro de l'objet du formulaire sur lequel l'action porte.
		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

GWVA_WFORM_STRUCT_OBJ_END_LIST :  Cette structure ne demande aucun para-
mtre. Elle indique simplement la fin de l'EVNT_LIST.

 GWVA_WFORM_STRUCT_OBJ_END_LIST

			     9.4.5.1.2 Les mthodes

Pas encore de mthodes spcifiques pour cet objet.

			9.4.5.2 L'objet bouton

Cette structure est lie  tous les objets graphiques slectionnables.

objet_bouton:
	GWVA_WFORM_STRUCT_BUTTON	    paramtre ventuel
	; OBJ_START_EVNT_LIST
	GWVA_WFORM_STRUCT_OBJ_EVENT	    paramtres
	...
	GWVA_WFORM_STRUCT_OBJ_END_LIST

			      9.4.5.2.1 Les proprits

GWVA_WFORM_STRUCT_BUTTON : Cette proprit est spcifique de l'objet bouton.

	GWVA_WFORM_STRUCT_BUTTON	*STATE

	STATE :		GWVA_FORM_BTON_OBJ_STATE (1 mot)
	tat de l'objet identique  celui du GEM (bit 0 = slectionn ...), en lecture uniquement.

GWVA_WFORM_STRUCT_OBJ_EVENT: Cette structure sert  dfinir un vnement 
dans la liste des vnements cet l'objet. La liste commence  l'offset 
GWVA_FORM_BTON_OBJ_START_EVNT_LIST. NB: Les labels d'offset donns ci-aprs 
sont par rapport  chaque STRUCT_OBJ_EVENT.

 GWVA_WFORM_STRUCT_OBJ_EVENT	EVNT,ROUTINE

	EVNT :		GWVA_WFORM_STRUCT_OBJ_EVENT_EVNT (1 mot)
		Les vnements possibles sont :
	. 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.
	ROUTINE :		GWVA_WFORM_STRUCT_OBJ_EVENT_ROUTINE (1 long)
			Lors de l'apparition de l'vnement, le V.A. appelle la routine avec les paramtres :
		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.

GWVA_WFORM_STRUCT_OBJ_END_LIST :  Cette structure ne demande aucun para-
mtre. Elle indique simplement la fin de l'EVNT_LIST.

 GWVA_WFORM_STRUCT_OBJ_END_LIST

	 		     9.4.5.2.2 Les mthodes

Pas encore de mthodes spcifiques pour cet objet.

			9.4.5.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.

objet_popup:
	GWVA_WFORM_STRUCT_POPUP	paramtres

			      9.4.5.3.1 Les proprits

GWVA_WFORM_STRUCT_POPUP : La dfinition de l'objet popup est la suivante : 

 GWVA_WFORM_STRUCT_POPUP     TREE_FORM,FORM_IDX,SELECTION,*CHANGE_ROUTINE

	TREE_FORM :	GWVA_FORM_POP_OBJ_TREE_FORM (1 mot)
			Numro de l'arbre (formulaire) contenant le popup.
	FORM_IDX :	GWVA_FORM_POP_OBJ_FORM_IDX (1 mot)
			Numro de l'objet dans l'arbre qui sera le popup.
	SELECTION :	GWVA_FORM_POP_OBJ_SELECTION (1 mot)
			Numro de l'objet slectionn au dbut ( initialiser par le programmeur).
	*CHANGE_ROUTINE :	GWVA_FORM_POP_OBJ_CHANGE_ROUTINE (1 long)
			Pointeur sur la routine associe  toute nouvelle slection (0.L si aucune). Lors de 
l'apparition de l'vnement "change", le V.A. appelle la routine avec les paramtres :
		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.5.3.2 Les mthodes

Pas encore de mthodes spcifiques pour cet objet.


			9.4.5.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 objets du formulaire est 
celui du pre de tous les radio-boutons.

objet_radio_bouton:
	GWVA_WFORM_STRUCT_RBUTTON  paramtres ventuels

			      9.4.5.4.1 Les proprits

GWVA_WFORM_STRUCT_RBUTTON : Dfinit les proprits de cet objet.

	GWVA_WFORM_STRUCT_RBUTTON  *SELECTION,*CHANGE_ROUTINE

	SELECTION :	GWVA_FORM_RADIO_OBJ_SELECTION (1 mot)
			Numro de l'objet slectionn au dbut ( initialiser par le programmeur).
	*CHANGE_ROUTINE :     GWVA_FORM_RADIO_OBJ_CHANGE_ROUTINE (1 long)
			Pointeur sur la routine associe  toute nouvelle slection (0 si aucune). Lors de 
l'apparition de l'vnement "change", le V.A. appelle la routine avec les paramtres :
		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.5.4.2 Les mthodes

Pas encore de mthodes spcifiques pour cet objet.


			9.4.5.5 L'objet barre de progression

	Cet objet a des proprits, des mthodes mais pas d'vnements puisqu'il est visuel unique-
ment, et que son tat est chang par le programmeur.
Au niveau graphique, il s'agit d'un pre contenant un fils de taille variable, calcule en fonc-
tion 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.

objet_barre_de_progression:
	GWVA_WFORM_STRUCT_PROGRESS	paramtres

			      9.4.5.5.1 Les proprits

GWVA_WFORM_STRUCT_PROGRESS : Cette structure dfinit les prorits de cet ob-
jet.

	GWVA_WFORM_STRUCT_PROGRESS	SON_IDX,FATHER_IDX,*PERCENT,*TEXT_IDX

	SON_IDX :		GWVA_FORM_PROGRESS_OBJ_GRAPHIC_SIDX (1 mot)
			Index du graphique dont la taille va varier de 0  celle du pre.
	FATHER_IDX :	GWVA_FORM_PROGRESS_OBJ_GRAPHIC_FIDX (1 mot)
			Index du graphique pre fixe contenant l'autre variable (0 si pas de graphique).
	*PERCENT :	GWVA_FORM_PROGRESS_OBJ_PERCENT (1 mot)
			Pourcentage 0 <= percent <= 100 sinon infini "oo".
	*TEXT_IDX :	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).



			     9.4.5.5.2 Les mthodes

	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.5.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 
dplacer 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 :

objet_slider:
	GWVA_WFORM_STRUCT_SLIDER	paramtres

			      9.4.5.6.1 Les proprits

GWVA_WFORM_STRUCT_SLIDER : Cette structure dfinit les proprits de cet objet.

	GWVA_WFORM_STRUCT_SLIDER	ORIENT,SON_IDX,FATHER_IDX,*SIZE,*LENGTH,
&			*P1_IDX,*M1_IDX,*P1P_IDX,*M1P_IDX,*ROUTINE

	ORIENT :		GWVA_FORM_SLIDER_OBJ_ORIENT (1 mot)
			Direction du slider (0 horizontal, 1 vertical)
	SON_IDX :		GWVA_FORM_SLIDER_OBJ_GRAPHIC_SIDX (1 mot)
			Index du graphique du coulisseau en lui mme
	FATHER_IDX :	GWVA_FORM_SLIDER_OBJ_GRAPHIC_FIDX (1 mot)
			Index du graphique de la glissire
	SIZE :		GWVA_FORM_SLIDER_OBJ_SIZE (1 long)
			Nombre d'lments reprsentant le coulisseau (une page)
	LENGTH :		GWVA_FORM_SLIDER_OBJ_LENGTH (1 long)
			Nombre d'lments reprsentant la glissire. La taille de la glissire doit suprieur ou 
gale  la taille du coulisseau.
	P1_IDX :		GWVA_FORM_SLIDER_OBJ_GRAPHIC_P1_IDX (1 mot)
			Index de l'objet provoquant l'addition d'un lment (0 si pas)
	M1_IDX :		GWVA_FORM_SLIDER_OBJ_GRAPHIC_M1_IDX (1 mot)
			Index de l'objet provoquant la soustraction d'un lment (0 si pas)
	P1P_IDX :		GWVA_FORM_SLIDER_OBJ_GRAPHIC_P1P_IDX (1 mot)
			Index de l'objet provoquant l'addition d'une page (0 si pas)
	M1P_IDX :		GWVA_FORM_SLIDER_OBJ_GRAPHIC_M1P_IDX (1 mot)
			Index de l'objet provoquant la soustraction d'une page (0 si pas)
	ROUTINE :		GWVA_FORM_SLIDER_OBJ_CHANGE_ROUTINE (1 long)
			Pointeur sur la routine associe  toute nouvelle slection (0 si pas). Lors de 
l'apparition de l'vnement "change", le V.A. appelle la routine avec les paramtres :
		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)

	Paramtre non apparent :

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

			     9.4.5.6.2 Les mthodes

	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 affichage 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 coulisseau, 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.4.5.7 L'objet clic-equivalent

Cet objet est trs utile est trs facile  utiliser. Il permet d'assigner un quivalent click  un 
objet, i.e : quand vous cliquerez sur un premier objet cela fera comme si vous cliquiez sur un 
second. Ceci est pratique, par exemple, pour faire comme si un clic dans un texte dcrivant un 
radio-bouton tait un clic dans le radio-bouton lui-mme.

objet_click_equivalent:
	GWVA_WFORM_STRUCT_CLICK_EQUIV	paramtre

			      9.4.5.7.1 Les proprits

GWVA_WFORM_STRUCT_CLICK_EQUIV : Dfinition de cet objet.

	GWVA_WFORM_STRUCT_CLICK_EQUIV	IDX

	IDX :		GWVA_FORM_CLICK_EQUIV_OBJ_IDX (1 mot)
			Index de l'objet sur lequel il faut simuler un clic  la place de d'un clic sur l"objet 
d'origine. Cet objet doit tre dans le mme formulaire.

			     9.4.5.7.2 Les mthodes

Pas encore de mthode pour cet objet.

			9.4.6 Les objets custom

L'intgration d'objets personnels dans le V.A. est dornavant possible. Il suffit de dfinir 
l'option OPT_GWVA_WIND_FORM_CUSTOM_OBJECTS et de placer l'adresse de la 
routine de traitement de ses objets dans la variable V.A. GWVA_WFORM_OBJ_CUS-
TOM_OBJ_PRG. Votre routine recevra alors, lors de son appel, les paramtres suivant :
	d0.w	= numro de l'objet  traiter
	d1.w	= type de l'objet
	d2.w	= que redessiner dans le cas d'un redraw d'une partie du form
	d3.w	= tat de l'objet avant l'action (click ...)
	a0.l	= pointeur sur la fentre contenant l'objet
	a1.l	= pointeur sur la structure spcifique  la fentre FORM
	a2.l	= pointeur sur la structure dcrivant l'objet cliqu (n,shortcut,Type,Ptr struc)
	a3.l	= pointeur sur Ptr struc

Votre routine de traitement est appele ds qu'un objet de type non reconnu par le V.A. 
mais dfini dans la liste des objets d'un formulaire est activ.
Le V.A. se rserve les 256 premiers types d'objet. Vous devez donc commencez de num-
roter leur type  partir de $0100, avec des noms commenant par GWVA_CLASS_ si vous 
voulez que vos objets soient un jour intgrs.


	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 peuvent tre affiches pour le moment.
La dclaration d'une fentre bitmap dans le .OBJ doit se faire ainsi :

spec_fentre_bitmap:
	GWVA_WBITM_STRUCT_BASE	paramtres ventuels


		9.5.1 Les proprits

GWVA_WBITM_STRUCT_BASE : Cette structure dfinit les proprits fondamentales 
de la fentre bitmap.

 GWVA_WBITM_STRUCT_BASE	*NBR_BITPLANES,*1IMG_WIDTH,*1IMG_HEIGHT,
&			*DATA_PTR,*PAL_PTR

	*NBR_BITPLANES :	GWVA_WBITM_OBJ_NBR_BITPLANES (1 mot)
			Nombre de plans de l'image : 1, 2, 4, 8, 16 (true color) ; sinon 0. (???)
	*1IMG_WIDTH :	GWVA_WBITM_OBJ_IMG_WIDTH (1 mot)
			Largeur de l'image (pixels).
	*1IMG_HEIGHT :	GWVA_WBITM_OBJ_IMG_HEIGHT (1 mot)
			Hauteur de l'image (pixels).
	*DATA_PTR :	GWVA_WBITM_OBJ_DATA_PTR (1 long)
			Pointeur sur l'image en elle-mme.
	*PAL_PTR :		GWVA_WBITM_OBJ_PAL_PTR (1 long)
			Pointeur sur la palette (4/16/256 couleurs).

	Paramtres non apparents :

La structure de l'objet fentre contient en plus, des proprits qui ne sont pas apparentes 
dans le .OBJ. Ces proprits sont dfinies par le VA ou initialises par le programmeur lors de 
l'excution de l'application. Il peut aussi tre ncessaire au programmeur d'avoir accs a ces 
proprits pendant l'excution :

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 fentre.

		9.5.2 Les mthodes


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.

GWVA_WIND_OBJ_PRG_ARROWED_WINDOW_BITMAP:
GWVA_WIND_OBJ_PRG_HSLIDE_WINDOW_BITMAP:
GWVA_WIND_OBJ_PRG_VSLIDE_WINDOW_BITMAP:
	Routines internes.


	9.6 L'objet fentre custom

Cette fentre est la seule  n'avoir aucune proprit spciale ; c'est vous qui grez son conte-
nu : 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 classique : move, nami-
fy ...


	9.7 L'objet fentre sans type

Cette fentre est trs spciale puisqu'elle n'a aucun vnement ni proprit, elle sert juste de 
conteneur pour d'autres fentres qui seraient ses filles. Donc uniquement dans le cas d'une fe-
ntre "parentale".


	9.8 L'lment toolbar

L'lment toolbar n'est ni plus ni moins qu'une fentre formulaire fille qui serait affich en 
haut d'une fentre mre. Il est en fait dj une sorte de raccourci souris d'une fonction couran-
te qui se trouve dans un menu.
Pour la dclarer, il suffit de dfinir une fentre formulaire classique dont le pointeur FA-
THER_PTR pointe sur une fentre mre dj dfinie dans laquelle elle sera affiche. La fen-
tre "mre" doit, quant  elle, avoir son pointeur FIRST_SON_PTR qui pointe sur cette struc-
ture de fentre "fille".
On voit bien que par ce principe une toolbar supporte aussi le multi-formulaire : c'est  dire 
que l'on peut avoir le mme formulaire de toolbar dans plusieurs fentres. Rfrez-vous  
l'exemple SAMPLES\MULTIDOC\FORM\PROJECT.* pour plus de prcision.


	9.9 L'lment menu

L'lment menu peut tre dfini pour deux objets : l'application principale (c'est le top me-
nu) ou dans une fentre. La seule diffrence dans les deux implantation est que le menu des 
fentres ne supporte pas encore les menus attachs. Si des menus attachs sont prsent dans sa 
structure, ils ne seront pas pris en compte. Par contre, les raccourcis menus sont supports 
dans les deux cas.
Pour le menu dans une fentre, un lment supplmentaire a t ajout : deux flches per-
mettent de faire dfiler le menu dans la fentre.
La dfinition d'un menu doit se faire ainsi :

structure_menu:
	GWVA_MENU_STRUCT_DEF	paramtres

	; MENU_STRUCT_START_LIST
	GWVA_MENU_STRUCT_EVNT	paramtres
	...
	GWVA_MENU_STRUCT_END_LIST

liste_sous_menus:
	dc.l	structure_sous_menu_1
	...
	dc.l	0

structure_sous_menu_1:
	GWVA_SUBMENU_STRUCT_DEF	paramtres
	GWVA_MENU_STRUCT_EVNT
	...
	GWVA_MENU_STRUCT_END_LIST


		9.9.1 Les proprits

GWVA_MENU_STRUCT_DEF : Cette structure dfinit les proprits de base d'un menu.

 GWVA_MENU_STRUCT_DEF	     INDEX,*LIST_ATTACH_PTR,*SCROLL_INDEX

	INDEX :		GWVA_MENU_STRUCT_INDEX (1 mot)
			Index de l'arbre du menu dans le ressource.
	*LIST_ATTACH_PTR :	GWVA_MENU_STRUCT_LIST_ATTACH_PTR (1 long)
			Pointeur sur un tableau de pointeurs sur des structures GWVA_SUB_MENU, termin 
par 0.l.
	*SCROLL_INDEX :	GWVA_MENU_STRUCT_SCROLL_INDEX (1 mot)
			Ordinal du titre du menu le plus  gauche (0 pour tout). 	Cette valeur n'est utilise pour 
l'instant que pour les menus dans les fentres.

GWVA_MENU_STRUCT_EVNT: Cette structure sert  dfinir la liste des vnements 
( en fait, des slections dans le menu ) dont souhaite tre averti le programmeur. La liste est 
constitue d'autant de structures que d'vnements ncessaires. La liste commence  l'offset 
GWVA_MENU_STRUCT_START_LIST. NB: Les labels d'offset donns ci-aprs sont par 
rapport  chaque STRUCT_EVENT.

	GWVA_MENU_STRUCT_EVNT	IDX,ROUTINE,*SHORTCUT
	
	IDX :		GWVA_MENU_OBJ_DEF_OBJ_NUM (1 mot)
			Numro du menu (Labels dfinit dans le .HS).
	ROUTINE :		GWVA_MENU_OBJ_DEF_OBJ_PTR (1 long)
			Pointeur sur votre routine associe.
	*SHORTCUT :	GWVA_MENU_OBJ_DEF_OBJ_SHORTCUT (1 mot)
			Le raccourci clavier ventuel (0 si pas). (cf.section sur les raccourci-claviers)

GWVA_MENU_STRUCT_END_LIST : Cette structure ne demande aucun paramtre. El-
le indique simplement la fin de l'EVENT_LIST.

 GWVA_MENU_STRUCT_END_LIST


Proprits non apparentes:

La structure de l'objet fentre contient en plus, des proprits qui ne sont pas apparentes 
dans le .OBJ. Ces proprits sont dfinies par le VA ou initialises par le programmeur lors de 
l'excution de l'application. Il peut aussi tre ncessaire au programmeur d'avoir accs a ces 
proprits pendant l'excution :

GWVA_MENU_STRUCT_PTR:	1 long
			Pointeur sur l'arbre du menu dans le ressource (calcul par le V.A).
	
		9.9.1.1 Les proprits des sous-menus

Dans le cas de sous-menus attachs, les attachements sont effectus par le V.A au dbut du 
programme (fonction supporte  partir de l'AES 3.3).
	La structure d'un sous-menu (menu attach  un autre menu) est la suivante :

 GWVA_SUBMENU_STRUCT_DEF	TREE_OBJ_ATTACHED,OBJ_IDX_ATTACHED,
&			TREE,INDEX,WHICH_ALIGN,*MENU_SCROLL

	TREE_OBJ_ATTACHED :	GWVA_SUB_MENU_TREE_OBJ_ATTACHED (1 mot)
			Arbre menu auquel on veut attacher ce sous-menu.
	OBJ_IDX_ATTACHED :	GWVA_SUB_MENU_OBJ_IDX_ATTACHED (1 mot)
			Index de la slection du menu  laquelle on va attacher ce sous-menu. Cet index 
reprsente une STRING de l'arbre TREE_OBJ_ATTACHED.
	TREE :		GWVA_SUB_MENU_TREE (1 mot)
			Index de l'arbre formulaire qui contient le dessin pre (BOX) du sous menu. Tous les 
dessins des menus attachs peuvent donc ou non tre rassembls dans un mme arbre.
	INDEX: 		GWVA_SUB_MENU_INDEX (1 mot)
			Index du pre. Cet index reprsente une BOX de l'arbre TREE.
	WHICH_ALIGN :	GWVA_SUB_MENU_WHICH_ALIGN (1 mot)
			Quel slection du pre ci-dessus doit tre aligne avec l'OBJ_IDX_ATTACHED. Cet 
index reprsente une STRING de l'objet INDEX.
	*SCROLL :		GWVA_SUB_MENU_SCROLL (1 mot)
			Le menu est-il scrollable ? 0 : non, par dfaut ; 1 : oui.

		9.9.2 Les vnements

Les vnements sont identiques qu'il s'agisse du menu principal ou du menu d'une fentre. 
En fait, il n'y a qu'un seul vnement possible : la slction d'un lment. 
Comment faire pour qu'une de vos routines soit appele lorsqu'un lment donn sera slec-
tionn ?
La structure de la section "proprit du menu" contiendra ces informations, c'est  dire :
. le numro du menu sera dans GWVA_MENU_OBJ_DEF_OBJ_NUM et
. le pointeur de votre routine sera dans GWVA_MENU_OBJ_DEF_OBJ_PTR.

		9.9.3 Les mthodes internes V.A.

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_OBJECT_IDX)
GWVA_EXEC_MENU_ROUTINE_FROM_MENU_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
GWVA_EXEC_MENU_ROUTINE_FROM_MENU_IDX:
	a0.l	= pointeur sur une structure _STRUCT_START_LIST
	d0.w	= Index du menu
GWVA_WIND_OBJ_PRG_MENU_ARROWS
GWVA_WIND_OBJ_PRG_MENU_BAR
GWVA_WIND_OBJ_PRG_MENU_OFF
GWVA_WIND_OBJ_PRG_MENU_SUBITEM_OFF
GWVA_WIND_OBJ_PRG_MENU_CLICK
GWVA_WIND_OBJ_PRG_MENU_DROPDOWN_ON
GWVA_WIND_OBJ_PRG_MENU_DROPDOWN_OFF
GWVA_WIND_OBJ_PRG_MENU_SAVE_SCREEN
GWVA_WIND_OBJ_PRG_MENU_RESTORE_SCREEN
GWVA_WIND_OBJ_PRG_MENU_FIX_OBJECT_ARROW
	Routines internes


	9.10 La table de touches associe

On peut  dfinir une table de touches associes  une fentre. C'est ainsi qu'on peut grer 
des fonctions directement appelables au clavier pour une fentre. C'est aussi une faon alter-
native de trater un grand nombre de boutons similaires dans un formulaire sans avoir  les d-
finir individuellement, par exemple pour faire une sorte de clavier. On peut dfinir cette table 
ainsi :

key_table:
	GWVA_WIND_STRUCT_KEY	paramtres
	...
	GWVA_WIND_STRUCT_END_KEY


		9.10.1 Les proprits

GWVA_WIND_STRUCT_KEY :  Cette structure sert  dfinir la liste des touches qui 
doivent appeler des sous-programmes. La liste est constitue d'autant de structures que de 
touches ncessaires. La liste commence  l'offset  du label dfinit dans le .OBJ (dans l'exem-
ple ci-dessus : key_table). NB: Les labels d'offset donns ci-aprs sont par rapport  
chaque STRUCT_KEY.

 GWVA_WIND_STRUCT_KEY	SHORTCUT,ROUTINE,*TYPE

	SHORTCUT :	GWVA_WIND_OBJ_KEYTABLE_SHORTCUT (1 mot)
			Le raccourci (cf. cration des raccourcis menus).
	ROUTINE :		GWVA_WIND_OBJ_KEYTABLE_PTR (1 long)
	 		Le pointeur sur votre routine.
	*TYPE :		GWVA_WIND_OBJ_KEYTABLE_TYPE (1 mot)
			Type de raccourci : 0=raccourci normal, 1=ctrl+C, 2=ctrl+V, 3=ctrl+X.

GWVA_WIND_STRUCT_END_KEY :  Cette structure ne demande aucun paramtre. El-
le indique simplement la fin de la table des touches.

 GWVA_WIND_STRUCT_END_KEY

	9.11 Les raccourcis claviers

N'importe quel objet cliquable peut se voir assigner un raccourci qui reviendra en fait  un 
simple click sur cet objet. On rserve en gnral l'emploi des ctrl+? aux raccourcis pour les 
menus et les alt+? aux raccourcis 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 = valeur 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 ; F1	donne : dc.b 0,$80+$3B


Note 1 : ds que l'on a pas $80+..., le masque de touches spciales est indiffrent.
Note 2 : Nombre de combinaisons CTRL + touche de l'alphabet ont un quivalent avec 
une touche spciale (mme valeur ASCII). Exemple : CTRL + i est identique  un ap-
pui sur la touche TAB.

Attention : Pas de raccourcis utilisant ALT et une touche strictement  droite de 8 sur 
le clavier (scancode suprieur  $80 !) : il ne marchera pas !
