	16 . Un programme au pas  pas



	Voici un petit exemple explicatif pour vos premiers pas dans le Visual As-
sembleur : "START.S".


	16.1 Le fichier START.DEF

	; Definition file for Genuwax Visual Assembler 4.0
	; (c) GenuWax 10/VIII/95

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

GWVA_APP_OBJ_STACK_SIZE = 1024
GWVA_MAX_PATH_LENGTH = 128

GWVA_APP_DEP_LIB_VERSION = 4
GWVA_APP_DEP_LIB_MAJOR = 0
GWVA_APP_DEP_LIB_MINOR = 43

;MDL_TOS	; |
MDL_GEM	; | exclusif

MDL_RELOCATE_RSC

MDL_EVENTS

MDL_MENU

MDL_WIND
GWVA_APP_OBJ_MAX_NUMBER_WIND = 8

MDL_WIND_CUSTOM
MDL_WIND_TEXT
MDL_WIND_FORM
MDL_WIND_BITMAP

LIB_HEXA
LIB_DECI
;LIB_PALETTE
LIB_GET_FLENGTH
LIB_LOAD_FILE_IN_MEM
LIB_FILESELECTOR
LIB_FORMULARY

;FLG_INIBE_COLOR


	16.2 Le fichier START.HS

	; Indice du ressource pour START *

MENU_PRINCIPAL = 0	; Arbre menu *
MNU_FONTES = 5	; TITLE dans l'arbre MENU_PRINCIPAL *
MNU_DESK_INFO = 8	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_WIND1 = 17	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_WIND2 = 18	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_WIND3 = 19	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_WIND4 = 20	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_WIND5 = 21	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_WIND6 = 22	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_WIND7 = 23	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_WIND8 = 24	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_WIND9 = 25	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_OPEN_WI = 26	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FILE_QUIT = 27	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FONTES_BITMP = 29	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FONTES_SCALB = 30	; STRING dans l'arbre MENU_PRINCIPAL *
MNU_FONTES_FLYIG = 31	; STRING dans l'arbre MENU_PRINCIPAL *

FORM_BACKGROUND = 1	; FormulaireDialogue *
FORM_BACKGROUND0 = 0	; BOX dans l'arbre FORM_BACKGROUND *
FORM_BACKGROUND1 = 1	; BUTTON dans l'arbre FORM_BACKGROUND *

FORM_TOOLBAR1 = 2	; FormulaireDialogue *
TLOBJ_1 = 4   	; IMAGE dans l'arbre FORM_TOOLBAR1 *
TLOBJ_2 = 5   	; IMAGE dans l'arbre FORM_TOOLBAR1 *
TLOBJ_3 = 6   	; IMAGE dans l'arbre FORM_TOOLBAR1 *
TLOBJ_4 = 7   	; IMAGE dans l'arbre FORM_TOOLBAR1 *
TLOBJ_TXT = 31	; BOXTEXT dans l'arbre FORM_TOOLBAR1 *

FORMULAIRE3 = 3	; FormulaireDialogue *
TEXT_DESCRIPT = 3	; FTEXT dans l'arbre FORMULAIRE3 *
TEXT_DESCRIPT2 = 4	; FTEXT dans l'arbre FORMULAIRE3 *
TEXT_BANAL = 5	; TEXT dans l'arbre FORMULAIRE3 *
RADIO_1 = 8   	; BOX dans l'arbre FORMULAIRE3 *
BTON_YES = 9	; BUTTON dans l'arbre FORMULAIRE3 *
BTON_NO = 10  	; BUTTON dans l'arbre FORMULAIRE3 *
BTON_PERHAPS = 11	; BUTTON dans l'arbre FORMULAIRE3 *
BTON_OPTION1 = 12	; BUTTON dans l'arbre FORMULAIRE3 *
BTON_OPTION2 = 14	; BUTTON dans l'arbre FORMULAIRE3 *
POP_QUALITY3D = 16	; BOXTEXT dans l'arbre FORMULAIRE3 *
POP_QUALITY = 17	; BOXTEXT dans l'arbre FORMULAIRE3 *
BTON_DESC_OK = 19	; BUTTON dans l'arbre FORMULAIRE3 *
BTON_ANNULE_DESC = 21	; BUTTON dans l'arbre FORMULAIRE3 *

FORM_TOOLBAR2 = 4	; FormulaireDialogue *

FORM_TOOLBAR3 = 5	; FormulaireDialogue *

FORM_TOOLBOX = 6	; FormulaireDialogue *

ICONIFY_1 = 7	; FormulaireDialogue *

POPUPS = 8   	; FormulaireDialogue *
POPUP_QUALITY = 1	; BOX dans l'arbre POPUPS *
POPUP_90 = 2	; STRING dans l'arbre POPUPS *
POPUP_70 = 3	; STRING dans l'arbre POPUPS *
POPUP_50 = 4	; STRING dans l'arbre POPUPS *
POPUP_30 = 5	; STRING dans l'arbre POPUPS *
POPUP_10 = 6	; STRING dans l'arbre POPUPS *
POPUP_1 = 7   	; STRING dans l'arbre POPUPS *
POPUP_100 = 8	; STRING dans l'arbre POPUPS *
POPUP_QUALITY3D = 9	; BOX dans l'arbre POPUPS *
POPUP_1003D = 16	; STRING dans l'arbre POPUPS *

MENUS_ATTACHES = 9	; FormulaireDialogue *
MENU_PERE1 = 1	; BOX dans l'arbre MENUS_ATTACHES *
OBJ_MENU_PERE1 = 4	; STRING dans l'arbre MENUS_ATTACHES *
MENU_PERE2 = 9	; BOX dans l'arbre MENUS_ATTACHES *
OBJ_MENU_PERE2 = 16	; STRING dans l'arbre MENUS_ATTACHES *
MNU_FATHER_WINDO = 17	; BOX dans l'arbre MENUS_ATTACHES *
MNU_WINDOW1 = 18	; STRING dans l'arbre MENUS_ATTACHES *
MNU_WINDOW2 = 19	; STRING dans l'arbre MENUS_ATTACHES *
MNU_WINDOW3 = 20	; STRING dans l'arbre MENUS_ATTACHES *
MNU_WINDOW4 = 21	; STRING dans l'arbre MENUS_ATTACHES *
MNU_WINDOW6 = 22	; STRING dans l'arbre MENUS_ATTACHES *
MNU_WINDOW5 = 23	; STRING dans l'arbre MENUS_ATTACHES *
MNU_WINDOW7 = 24	; STRING dans l'arbre MENUS_ATTACHES *
MNU_WINDOW9 = 25	; STRING dans l'arbre MENUS_ATTACHES *
MNU_WINDOW8 = 26	; STRING dans l'arbre MENUS_ATTACHES *

FORM_GENERAL = 10	; FormulaireDialogue *
REDRAW_LVL1 = 1	; BOX dans l'arbre FORM_GENERAL *
FGO_EDIT_TIMER = 4	; FTEXT dans l'arbre FORM_GENERAL *
FGO_RADIO_INIT_S = 5	; IBOX dans l'arbre FORM_GENERAL *
FGO_BTON_INIT_Y = 6	; BUTTON dans l'arbre FORM_GENERAL *
FGO_BTON_INIT_N = 7	; BUTTON dans l'arbre FORM_GENERAL *
FGO_BTON_INIT_A = 8	; BUTTON dans l'arbre FORM_GENERAL *
FGO_BTON_AUTO_SA = 9	; BOXCHAR dans l'arbre FORM_GENERAL *
FGO_TEXT_VOXPATH = 12	; TEXT dans l'arbre FORM_GENERAL *
FGO_TEXT_LOGPATH = 13	; TEXT dans l'arbre FORM_GENERAL *
FGO_TEXT_VOXCMD = 15	; TEXT dans l'arbre FORM_GENERAL *
FGO_BTON_LOG_ACT = 16	; BOXCHAR dans l'arbre FORM_GENERAL *
FGO_TEXT_SFAXPAT = 19	; TEXT dans l'arbre FORM_GENERAL *
FGO_TEXT_SFAXCMD = 20	; TEXT dans l'arbre FORM_GENERAL *
FGO_EDIT_FAX_ID = 22	; FTEXT dans l'arbre FORM_GENERAL *
FGO_BTON_OK = 23	; BUTTON dans l'arbre FORM_GENERAL *
FGO_BTON_SAVE = 25	; BUTTON dans l'arbre FORM_GENERAL *

ICON_WIND1 = 11	; FormulaireDialogue *
ICONE_CLIGNOTANT = 1	; USERDEF dans l'arbre ICON_WIND1 *

ICON_WIND2 = 12	; FormulaireDialogue *

ALERT1 = 0   	; Chaine d'alerte *

CAUTION = 1   	; Chaine d'alerte *


	16.3 Le fichier START.OBJ

DATA
objet_application:	dc.b %00001111		; FLAGS
		dc.b 0			; STATUS
		dc.l 0			; TSR_SIZE
		dc.l name_app		; REG_NAME
		dc.l name_menu		; ACC_NAME
		dc.l table_name_rsc		; RSC_INFO
		dc.w FORM_BACKGROUND		; BACKGROUND_OBJ
		dc.l structure_menu_principal	; MAIN_MENU_PTR
		dc.l 0			; ALL_ICON_PTR
		dcb.w 10,0			; 
M1FLAG,M1X,M1Y,M1W,M1H,M2FLAG,M2X,M2Y,M2W,M2H
		dc.l 1000			; COUNT (TIMER)
		dc.l my_inits		; CUSTOM_INITS
		dc.l acc_open		; AC_OPEN
		dc.l acc_close		; AC_CLOSE
		dc.l app_term		; AP_TERM
		dc.l 0			; AP_TFAIL
		dc.l 0			; SHUT_COMPLETED
		dc.l 0			; RESCH_COMPLETED
		dc.l 0			; AP_DRAG_DROP
		dc.l 0			; SH_WDRAW
		dc.l 0			; CH_EXIT
		dc.l other_message		; ALL_OTHER
		dc.l 0			; EVNT_KEYBD
		dc.l 0			; EVNT_BUTTON
		dc.l 0			; EVNT_MOUSE1
		dc.l 0			; EVNT_MOUSE2
		dc.l timer_change_icon_aspect	; EVNT_TIMER

structure_menu_principal:
		dc.w MENU_PRINCIPAL		; INDEX
		dc.l 0			; PTR
		dc.w -1			; SCROLL_INDEX
		dc.l liste_sous_menus		; LIST_ATTACH_PTR

*		dc.w MNU_DESK_INFO,$00*256+'i'-'a'+1; MENU_STRUCT_START_LIST
*		dc.l information
		dc.w MNU_FILE_WIND1,$08*256+$80+$78	; Alt - 1
		dc.l menu_wind1
		dc.w MNU_FILE_WIND2,$00*256+$02	; Ctrl -  (Que en France)
		dc.l menu_wind2
		dc.w MNU_FILE_WIND3,$09*256+$80+$7a	; Shift - Alt - 3
		dc.l menu_wind3
		dc.w MNU_FILE_WIND4,$00*256+$14	; Shift - Ctrl - 4 (Que en 
France)
		dc.l menu_wind4
		dc.w MNU_FILE_WIND5,0
		dc.l menu_wind5
		dc.w MNU_FILE_WIND6,$00*256+$1d	; Ctrl -  (n'est pas dans la 
table US)
		dc.l menu_wind6
		dc.w MNU_FILE_WIND7,$09*256+$80+$7e	; Shift - Alt - 7
		dc.l menu_wind7
		dc.w MNU_FILE_WIND8,$00*256+$18	; Shift - Ctrl - 8
		dc.l menu_wind8
		dc.w MNU_FILE_WIND9,$08*256+'a'	; Alt - A
		dc.l menu_wind9
		dc.w MNU_FILE_QUIT,$00*256+$11	; Ctrl - Q
		dc.l menu_quit

		dc.w -1

liste_sous_menus:	dc.l structure_sous_menu_1
		dc.l structure_sous_menu_2
		dc.l structure_sous_menu_3
		dc.l structure_sous_menu_4
		dc.l 0

structure_sous_menu_1:
		dc.w MENU_PRINCIPAL		; TREE_OBJ_ATTACHED
		dc.w MNU_FONTES_FLYIG		; OBJ_IDX_ATTACHED
		dc.w MENUS_ATTACHES		; TREE
		dc.w MENU_PERE1		; INDEX
		dc.w OBJ_MENU_PERE1		; WHICH_ALIGN
		dc.w 0			; SCROLL

		dc.w -1			; START_LIST

structure_sous_menu_2:
		dc.w MENU_PRINCIPAL		; TREE_OBJ_ATTACHED
		dc.w MNU_FONTES_BITMP		; OBJ_IDX_ATTACHED
		dc.w MENUS_ATTACHES		; TREE
		dc.w MENU_PERE2		; INDEX
		dc.w OBJ_MENU_PERE2		; WHICH_ALIGN
		dc.w 0			; SCROLL

		dc.w -1			; START_LIST

structure_sous_menu_3:
		dc.w MENUS_ATTACHES		; TREE_OBJ_ATTACHED
		dc.w OBJ_MENU_PERE1		; OBJ_IDX_ATTACHED
		dc.w MENUS_ATTACHES		; TREE
		dc.w MENU_PERE2		; INDEX
		dc.w OBJ_MENU_PERE2		; WHICH_ALIGN
		dc.w 0			; SCROLL

		dc.w -1			; START_LIST

structure_sous_menu_4:
		dc.w MENU_PRINCIPAL		; TREE_OBJ_ATTACHED
		dc.w MNU_FILE_OPEN_WI		; OBJ_IDX_ATTACHED
		dc.w MENUS_ATTACHES		; TREE
		dc.w MNU_FATHER_WINDO		; INDEX
		dc.w MNU_WINDOW9		; WHICH_ALIGN
		dc.w 0			; SCROLL

		dc.w MNU_WINDOW1,0		; START_LIST
		dc.l menu_wind1
		dc.w MNU_WINDOW2,0
		dc.l menu_wind2
		dc.w MNU_WINDOW3,0
		dc.l menu_wind3
		dc.w MNU_WINDOW4,0
		dc.l menu_wind4
*		dc.w MNU_WINDOW5,0
*		dc.l menu_wind5
		dc.w MNU_WINDOW6,0
		dc.l menu_wind6
		dc.w MNU_WINDOW7,0
		dc.l menu_wind7
		dc.w MNU_WINDOW8,0
		dc.l menu_wind8
		dc.w MNU_WINDOW9,0
		dc.l menu_wind9
		dc.w -1

name_app:		dc.b 'START000',0
name_menu:		dc.b '  Exemple Visual 4.0  ',0

	ifnd MDL_RELOCATE_RSC
	ifnd OPT_FULL_PATHNAMES
rsc_2_colors:	dc.b 'start.rsc',0
rsc_16_colors:	dc.b 'start.rsc',0
	else
rsc_2_colors:	dc.b 'd:\assemble\visual40\start\start.rsc',0
rsc_16_colors:	dc.b 'd:\assemble\visual40\start\start.rsc',0
	endc
	else
rsc_2_colors:	incbin d:\assemble\visual40\start\start.rsc
rsc_16_colors:	incbin d:\assemble\visual40\start\start.rsc
	endc
even

table_name_rsc:	dc.l rsc_2_colors
		dc.l rsc_2_colors
		dc.l rsc_16_colors
		dc.l rsc_16_colors
		dc.l rsc_16_colors
	;-------------------------------------------
objet_fenetre1:	dc.w %0100111111111111		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000001		; PROPERTIES
		dc.w 1			; TOPABLE_STATE
		dc.l window1_name,window1_info	; NAME,INFO
		dc.l objet_fenetre1_iconifiee	; ICON_WIND_PTR
		dc.l toolbar_wind1		; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l table_touche_fenetre1	; KEY_TABLE

		dc.w -1,10			; FIRST_X,FIRST_Y
		dc.w 320,240		; FIRST_W,FIRST_H
		dc.w 640,480		; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1,500,1000,500		; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w GWVA_WIND_TYPE_CUSTOM	; TYPE
		dc.l 0			; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		dc.w WM_AFTER+WM_CLOSED		; START_EVNT_LIST
		dc.l event_window1_closed
		dc.w WM_BEFORE+WM_MOVED
		dc.l event_window1_moved
		dc.w WM_AFTER+WM_REDRAW
		dc.l event_window1_redraw
		dc.w -1

toolbar_wind1:	dc.w FORM_TOOLBAR1		; FORM_IDX
		dc.l 0			; FORM_PTR
		dc.l 0			; CLICK_ROUTINE
		dcb.w 8,0			; 
FOCUSED_TXT,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 TLOBJ_1		; obj idx
		dc.w 0			; shortcut(0=no)
		dc.w GWVA_FORM_WIND_OBJECT_BUTTON
		dc.l tool_obj1		; ptr struct

		dc.w -1

tool_obj1:		dc.w 0			; STATE
		dc.w GWVA_EVNT_CLICK		; START_EVNT_LIST
		dc.l wind1_tool_obj1_click
		dc.w -1

table_touche_fenetre1:	dc.w 1,$00*256+'c'-'a'+1
		dc.l fenetre1_control_c
		dc.w -1

window1_name:	dc.b 'Window custom 1 name',0
window1_info:	dc.b 'Window custom 1 info',0
even
		;---------
objet_fenetre1_iconifiee:
		dc.w %0000000000000001		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000000		; PROPERTIES
		dc.w 1			; TOPABLE_STATE
		dc.l window1_iconifiee_name,0	; NAME,INFO
		dc.l objet_fenetre1		; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w -1,10			; FIRST_X,FIRST_Y
		dc.w 320,240		; FIRST_W,FIRST_H
		dc.w 640,480		; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1,500,1000,500		; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w GWVA_WIND_TYPE_CUSTOM	; TYPE
		dc.l 0			; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		dc.w WM_AFTER+WM_REDRAW		; START_EVNT_LIST
		dc.l event_window1_iconifiee_redraw
		dc.w -1

window1_iconifiee_name:	dc.b 'Win1 ICON',0
even
	;-------------------------------------------
objet_fenetre2:	dc.w %0100111111111111		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000000		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window2_iconifiee_name,0	; NAME,INFO
		dc.l objet_fenetre2_iconifiee	; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w -1,10			; FIRST_X,FIRST_Y
		dc.w 320,240		; FIRST_W,FIRST_H
		dc.w 640,480		; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 500,500,500,-1		; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w 1			; TYPE
		dc.l 0			; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

*		dc.w WM_AFTER+WM_CLOSED		; START_EVNT_LIST
*		dc.l event_window2_closed
		dc.w -1

objet_fenetre2_iconifiee:
		dc.w %0000000000000001		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000000		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window2_iconifiee_name,0	; NAME,INFO
		dc.l objet_fenetre2		; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w 10,10			; FIRST_X,FIRST_Y
		dc.w 160,100		; FIRST_W,FIRST_H
		dc.w 0,0			; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1000,1000,1000,1000	; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w GWVA_WIND_TYPE_BITMAP	; TYPE
		dc.l spec_wind2_bitmap_iconifiee	; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		; START_EVNT_LIST
		dc.w -1

spec_wind2_bitmap_iconifiee:
		dc.w 80,56			; IMG_WIDTH,IMG_HEIGHT
		dc.l wind_icon2		; DATA_PTR
		dc.l wind_icon2+80*56/2		; PAL_PTR
		dc.w 4			; NBR_BITPLANES
		dc.w 0,0			; AFF_DX, AFF_DY

window2_name:	dc.b 'Window custom 2 name',0
window2_iconifiee_name:	dc.b 'Window 2',0
window2_info:	dc.b 'Window custom 2 info',0
even
	;-------------------------------------------
objet_fenetre3:	dc.w %0100111111111111		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000001		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window3_name,window3_info	; NAME,INFO
		dc.l objet_fenetre3_iconifiee	; ICON_WIND_PTR
		dc.l wind3_toolbar		; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w -1,20			; FIRST_X,FIRST_Y
		dc.w 320,240		; FIRST_W,FIRST_H
		dc.w 640,480		; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 10,10,10,10		; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w 3			; TYPE
		dc.l window3_specs		; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		dc.w WM_BEFORE+WM_REDRAW	; START_EVNT_LIST
		dc.l event_window3_redraw

		dc.w WM_GWVA_NEWIND+WM_BEFORE
		dc.l event_window3_created

		dc.w WM_GWVA_OPENED+WM_BEFORE
		dc.l event_window3_opened

		dc.w WM_CLOSED+WM_BEFORE
		dc.l event_window3_closed

		dc.w -1

wind3_toolbar:	dc.w FORM_TOOLBAR2		; FORM_IDX
		dc.l 0			; FORM_PTR
		dc.l 0			; CLICK_ROUTINE
		dcb.w 8,0			; 
FOCUSED_TXT,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 -1

window3_specs:	dc.w FORMULAIRE3		; FORM_IDX
		dc.l 0			; FORM_PTR
		dc.l 0			; CLICK_ROUTINE
		dc.w TEXT_DESCRIPT		; 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_DESC_OK		; obj idx
		dc.w $08*256+'o'		; shortcut(0=no)
		dc.w GWVA_FORM_WIND_OBJECT_BUTTON
		dc.l struct_bton_ok1		; ptr struct

		dc.w BTON_ANNULE_DESC		; obj idx
		dc.w 0			; shortcut(0=no)
		dc.w GWVA_FORM_WIND_OBJECT_BUTTON
		dc.l struct_bton_cancel		; ptr struct

		dc.w POP_QUALITY		; obj idx
		dc.w 0			; shortcut(0=no)
		dc.w GWVA_FORM_WIND_OBJECT_MENU_POPUP
		dc.l struct_popup1		; ptr struct

		dc.w POP_QUALITY3D		; obj idx
		dc.w 0			; shortcut(0=no)
		dc.w GWVA_FORM_WIND_OBJECT_MENU_POPUP
		dc.l struct_popup2		; ptr struct

		dc.w RADIO_1		; obj idx
		dc.w 0			; shortcut(0=no)
		dc.w GWVA_FORM_WIND_OBJECT_RADIO_BUTTON
		dc.l struct_radio1		; ptr struct

		dc.w BTON_OPTION1		; obj idx
		dc.w $08*256+'p'		; shortcut(0=no)
		dc.w GWVA_FORM_WIND_OBJECT_BUTTON
		dc.l struct_opt1		; ptr struct

		dc.w TEXT_DESCRIPT2		; obj idx
		dc.w 0			; shortcut(0=no)
		dc.w GWVA_FORM_WIND_OBJECT_TEXT
		dc.l struct_text2		; ptr struct

		dc.w -1

struct_opt1:	dc.w 0			; STATE
		dc.w GWVA_EVNT_UNSELECTED	; START_EVNT_LIST
		dc.l w3_option1_unselct
		dc.w -1

struct_radio1:	dc.w -1			; SELECTION
		dc.l radio_bton_click		; CHANGE_ROUTINE

struct_bton_ok1:	dc.w 0			; STATE
		dc.w GWVA_EVNT_CLICK		; START_EVNT_LIST
		dc.l wind3_bton_ok_click
		dc.w -1

struct_bton_cancel:	dc.w 0			; STATE
		dc.w GWVA_EVNT_CLICK		; START_EVNT_LIST
		dc.l wind3_bton_cancel_click
		dc.w -1

struct_popup1:	dc.w POPUPS			; TREE_FORM
		dc.w POPUP_QUALITY		; FORM_IDX
		dc.w POPUP_100		; SELECTION
		dc.l popup1_changed		; CHANGE_ROUTINE

struct_popup2:	dc.w POPUPS			; TREE_FORM
		dc.w POPUP_QUALITY3D		; FORM_IDX
		dc.w POPUP_1003D		; SELECTION
		dc.l 0			; CHANGE_ROUTINE

struct_text2:	dc.w GWVA_EVNT_CLICK		; START_EVNT_LIST
		dc.l event_text2_warning_clicked
		dc.w GWVA_EVNT_GOTFOCUS
		dc.l event_text2_gotfocus
		dc.w GWVA_EVNT_LOSTFOCUS
		dc.l event_text2_lostfocus
		dc.w GWVA_EVNT_CHANGED
		dc.l event_text2_changed
		dc.w -1


window3_name:	dc.b 'Window form 3 name',0
window3_info:	dc.b 'Window form 3 info',0
even
	;-----------
objet_fenetre3_iconifiee:
		dc.w %0000000000000001		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000000		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window3_iconifiee_name,0	; NAME,INFO
		dc.l objet_fenetre3		; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w -1,10			; FIRST_X,FIRST_Y
		dc.w 320,240		; FIRST_W,FIRST_H
		dc.w 640,480		; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1,500,1000,500		; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w GWVA_WIND_TYPE_CUSTOM	; TYPE
		dc.l 0			; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		dc.w -1		; START_EVNT_LIST

window3_iconifiee_name:	dc.b 'NO Redraw!',0
even

	;-------------------------------------------
objet_fenetre4:	dc.w %0100000000011111		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000001100000000		; PROPERTIES
		dc.w -1			; TOPABLE_STATE
		dc.l window4_name,window4_info	; NAME,INFO
		dc.l objet_fenetre4_iconifiee	; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w -1,-1			; FIRST_X,FIRST_Y
		dc.w 320,240		; FIRST_W,FIRST_H
		dc.w 640,480		; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 100,100,100,100		; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w 3			; TYPE
		dc.l window4_specs		; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		dc.w -1			; START_EVNT_LIST

window4_specs:	dc.w FORM_GENERAL		; FORM_IDX
		dc.l 0			; FORM_PTR
		dc.l 0			; CLICK_ROUTINE
		dc.w FGO_EDIT_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 -1

window4_name:	dc.b 'Window form 4 name',0
window4_info:	dc.b 'Window form 4 info',0
even
		;---------------
objet_fenetre4_iconifiee:
		dc.w %0000000000000001		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000000		; PROPERTIES
		dc.w -1			; TOPABLE_STATE
		dc.l window4_iconifiee_name,0	; NAME,INFO
		dc.l objet_fenetre4		; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w 0,0			; FIRST_X,FIRST_Y
		dc.w 320,240		; FIRST_W,FIRST_H
		dc.w 640,480		; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1,1000,1,1000		; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w 3			; TYPE
		dc.l window4_iconifiee_specs	; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		dc.w -1			; START_EVNT_LIST

window4_iconifiee_specs:dc.w ICON_WIND2		; FORM_IDX
		dc.l 0			; FORM_PTR
		dc.l 0			; CLICK_ROUTINE
		dcb.w 8,0			; 
FOCUSED_TXT,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 -1

window4_iconifiee_name:	dc.b 'Icon FORM',0
even
	;-------------------------------------------
objet_fenetre5:	dc.w %0100000000001001		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000000		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window5_name,0		; NAME,INFO
		dc.l objet_fenetre5_iconifiee	; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w 0,0			; FIRST_X,FIRST_Y
		dc.w 320,240		; FIRST_W,FIRST_H
		dc.w 640,480		; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1,1000,1,1000		; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w 3			; TYPE
		dc.l window5_specs		; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		dc.w -1			; START_EVNT_LIST

window5_specs:	dc.w FORM_TOOLBOX		; FORM_IDX
		dc.l 0			; FORM_PTR
		dc.l 0			; CLICK_ROUTINE
		dcb.w 8,0			; 
FOCUSED_TXT,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 -1

window5_name:	dc.b 'TOOLBOX',0
even
		;---------------
objet_fenetre5_iconifiee:
		dc.w %0000000000000001		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000000		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window5_iconifiee_name,0	; NAME,INFO
		dc.l objet_fenetre5		; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w 0,0			; FIRST_X,FIRST_Y
		dc.w 320,240		; FIRST_W,FIRST_H
		dc.w 640,480		; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1,1000,1,1000		; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w 3			; TYPE
		dc.l window5_iconifiee_specs	; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		dc.w -1			; START_EVNT_LIST

window5_iconifiee_specs:dc.w ICON_WIND1		; FORM_IDX
		dc.l 0			; FORM_PTR
		dc.l 0			; CLICK_ROUTINE
		dcb.w 8,0			; 
FOCUSED_TXT,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 -1

window5_iconifiee_name:	dc.b 'Icon TOOLBOX',0
even

	;-------------------------------------------
objet_fenetre6:	dc.w %0000111111111111		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000001		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window6_name,window6_info	; NAME,INFO
		dc.l 0			; ICON_WIND_PTR
		dc.l toolbar_wind6		; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w -1,100			; FIRST_X,FIRST_Y
		dc.w 10,10			; FIRST_W,FIRST_H
		dc.w 0,0			; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1000,1000,1000,1000	; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w 2			; TYPE
		dc.l spec_wind6_texte		; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		dc.w WM_ARROWED+WM_BEFORE	; START_EVNT_LIST
		dc.l event_window6_arrowed

		dc.w -1

spec_wind6_texte:	dc.w 80,100			; NB_COLONNES,NB_LIGNES
		dc.w 13			; FNT_SIZE
		dcb.w 2,0			; CELL_WIDTH,CELL_HEIGHT
		dc.l 0			; MALOC
		dcb.w 8,0			; 
CUR_BUF_COL,CUR_BUF_LIGN,CUR_AFF_COL,CUR_AFF_LIGN,BUF_COLONNE,BUF_LIGNE,AFF_COLONNE,AFF_LIGNE
		dc.w 0			; IS_CLONE_FORM
		dc.l 0			; CLONE_FORM_SAVE
		dc.l 0			; CLONE_MAIN_PTR
	
toolbar_wind6:	dc.w FORM_TOOLBAR3		; FORM_IDX
		dc.l 0			; FORM_PTR
		dc.l 0			; CLICK_ROUTINE
		dcb.w 8,0			; 
FOCUSED_TXT,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 -1

window6_name:	dc.b 'Window text 6 name',0
window6_info:	dc.b 'Window text 6 info',0
even
	;-------------------------------------------
objet_fenetre7:
*		dc.w %0100111111111111		; FLAGS
		dc.w %0100000000011111		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000001		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window7_name,window7_info	; NAME,INFO
		dc.l objet_fenetre7_iconifiee	; ICON_WIND_PTR
		dc.l toolbar_wind7		; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w 10,10			; FIRST_X,FIRST_Y
		dc.w 160,100		; FIRST_W,FIRST_H
		dc.w 0,0			; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1000,1000,1000,1000	; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w GWVA_WIND_TYPE_BITMAP	; TYPE
		dc.l spec_wind7_bitmap		; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		; START_EVNT_LIST

		dc.w WM_AFTER+WM_CLOSED		; START_EVNT_LIST
		dc.l event_window_bitmap_closed

		dc.w WM_BEFORE+WM_FULLED
		dc.l event_window_bitmap_fulled

		dc.w -1


spec_wind7_bitmap:	dc.w 0,0			; IMG_WIDTH,IMG_HEIGHT
		dc.l 0			; DATA_PTR
		dc.l 0			; PAL_PTR
		dc.w 0			; NBR_BITPLANES
		dc.w 0,0			; AFF_DX, AFF_DY

toolbar_wind7:	dc.w FORM_TOOLBAR3		; FORM_IDX
		dc.l 0			; FORM_PTR
		dc.l 0			; CLICK_ROUTINE
		dcb.w 8,0			; 
FOCUSED_TXT,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 -1

objet_fenetre7_iconifiee:
		dc.w %0000000000000001		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000000		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window7_iconifiee_name,0	; NAME,INFO
		dc.l objet_fenetre7		; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w 10,10			; FIRST_X,FIRST_Y
		dc.w 160,100		; FIRST_W,FIRST_H
		dc.w 0,0			; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1000,1000,1000,1000	; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w GWVA_WIND_TYPE_BITMAP	; TYPE
		dc.l spec_wind7_bitmap_iconifiee	; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		; START_EVNT_LIST
		dc.w -1

spec_wind7_bitmap_iconifiee:
		dc.w 80,56			; IMG_WIDTH,IMG_HEIGHT
		dc.l wind_icon1		; DATA_PTR
		dc.l wind_icon1+80*56/2		; PAL_PTR
		dc.w 4			; NBR_BITPLANES
		dc.w 0,0			; AFF_DX, AFF_DY

window7_name:	dc.b 'Window bitmap 7 16,name',0
window7_iconifiee_name:	dc.b 'Window 7',0
window7_info:	dc.b 'Graphics  RABEARIVELO Solofonirina using NEON 3D',0
even
	;-------------------------------------------
objet_fenetre8:	dc.w %0000111111111111		; FLAGS
		dc.w 0			; STATUS
		dc.w %0000000000000000		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window8_name,window8_info	; NAME,INFO
		dc.l 0			; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w 10,10			; FIRST_X,FIRST_Y
		dc.w 160,100		; FIRST_W,FIRST_H
		dc.w 0,0			; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1000,1000,1000,1000	; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w GWVA_WIND_TYPE_BITMAP	; TYPE
		dc.l spec_wind8_bitmap		; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		; START_EVNT_LIST

		dc.w WM_AFTER+WM_CLOSED		; START_EVNT_LIST
		dc.l event_window_bitmap_closed

		dc.w -1


spec_wind8_bitmap:	dc.w 0,0			; IMG_WIDTH,IMG_HEIGHT
		dc.l 0			; DATA_PTR
		dc.l 0			; PAL_PTR
		dc.w 0			; NBR_BITPLANES
		dc.w 0,0			; AFF_DX, AFF_DY

window8_name:	dc.b 'Window bitmap 8 TC, name',0
window8_info:	dc.b 'Graphics  RABEARIVELO Solofonirina using NEON 3D',0
even
	;-------------------------------------------
objet_fenetre9:	dc.w %0000111111111111		; FLAGS
		dc.w 0			; STATUS
		dc.w %0001001100000000		; PROPERTIES
		dc.w 0			; TOPABLE_STATE
		dc.l window9_name,window9_info	; NAME,INFO
		dc.l 0			; ICON_WIND_PTR
		dc.l 0			; TOOLBAR_SPEC_PTR
		dc.w 0			; TOOLBAR_HEIGHT
		dc.l 0			; MENU_SPEC_PTR
		dc.w 0			; MENU_HEIGHT
		dc.l 0			; KEY_TABLE

		dc.w 10,10			; FIRST_X,FIRST_Y
		dc.w 160,100		; FIRST_W,FIRST_H
		dc.w 0,0			; INTERNAL_MAX_W,INTERNAL_MAX_H

		dc.w -1			; GEM_HANDLE
		dcb.w 10,0			; 
EXTERNAL_X,EXTERNAL_Y,EXTERNAL_W,EXTERNAL_H,INTERNAL_X,INTERNAL_Y,INTERNAL_W,INTERNAL_H,EXTERNAL_MAX_W,EXTERNAL_MAX_H
		dc.w 1000,1000,1000,1000	; 
SLIDER_V_POS,SLIDER_V_SIZE,SLIDER_H_POS,SLIDER_H_SIZE

		dc.w GWVA_WIND_TYPE_BITMAP	; TYPE
		dc.l spec_wind9_bitmap		; SPEC_PTR
		dcb.l 2,0			; USER_PTR1,USER_PTR2

		; START_EVNT_LIST
		dc.w -1

spec_wind9_bitmap:	dc.w 0,0			; IMG_WIDTH,IMG_HEIGHT
		dc.l 0			; DATA_PTR
		dc.l 0			; PAL_PTR
		dc.w 0			; NBR_BITPLANES
		dc.w 0,0			; AFF_DX, AFF_DY

window9_name:	dc.b 'Window bitmap 9 256c, name',0
window9_info:	dc.b 'Graphics  RABEARIVELO Solofonirina using NEON 3D',0
even


	16.4 Le fichier START.S

	output d:\assemble\visual40\start\start.app

OPT_FULL_PATHNAMES	; pour avoir le chemin complet du ressource pendant le dbug
*OPT_DEBUG_VISUAL_SYSTEM_EVNT
*OPT_DEBUG_VISUAL_WIND_OBJ_EVNT
*OPT_DEBUG_VISUAL_FORM_OBJ_EVNT

	lea objet_application,a1

	include start.def
	include visual40.s
	include start.hs
	include start.obj

	comment HEAD=7
	section TEXT

*--------------------------------------------------------------------------*
	; Ceci est le programme de rfrence pour le Visual Assembleur 4.0
	; Il utilise presque toutes les fonctionnalits de base (pas les librairies)
	; C'est celui que les concepteurs du V.A testent en premier quand ils
	; intgrent une nouvelle fonctionalit.

my_inits:	lea objet_fenetre5,a0
	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND

	move #CAUTION,d0
	move #3,d1
	bsr RSC_ALERT_BOX

	rts

		*--------------------------*

app_term:
menu_quit:
	bra VISUAL40_END

		*--------------------------*

information:move.w #FORM_GENERAL,d0
	bsr GWVA_PRG_MODAL_FORM
	rts

		*--------------------------*

acc_open:	lea texte,a0		; 35 chars max.
	lea mask,a1			; 18 caracteres max
	lea 0,a2			; pas de slection par dfaut
	bsr FILE_SELECTOR
	tst d0
	ble.s .annule		; annule ou erreur ?

	move #ALERT1,d0		; exemple d'alerte dans le ressource
	move #2,d1
	bsr RSC_ALERT_BOX

.annule:	rts

		*--------------------------*

acc_close:	rts

		*--------------------------*

other_message:
	rts

		*--------------------------*
	; Ce timer permet de faire clignoter le dessin quand la fentre 	; Toolbox(5) est  
l'tat iconifi

timer_change_icon_aspect:
	lea objet_fenetre5,a0
	bsr GWVA_WIND_OBJ_PRG_TEST_IF_WIND_NOT_ICONIFIED
	beq.s .window_not_inconified
	
	move.w #ICON_WIND1,d0
	move.w #ICONE_CLIGNOTANT,d1
	bsr RETURN_OBJ_IN_FORM_OBJ_PTR

	bchg #0,ob_state+1(a1)		; slection/dslection

	lea objet_fenetre5_iconifiee,a0
	move.w #0,d0		; objet de dbut redessin
	move.w #7,d1		; profondeur de redessin
	move.w #0,d2		; intrieur de la fentre
	bsr GWVA_FORM_WIND_OBJ_PRG_REDRAW_PART

.window_not_inconified:
	rts
		*--------------------------*
menu_wind1:
	; Attention cette fentre a TOPABLE_STATE = 1
	; elle est donc untopable : jamais en premier plan !
	; quand on l'ouvre : elle se met derrire (untop) toute seule!

	lea objet_fenetre1,a0
	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND
	rts

	; REMARQUE GENERALE : optimisation, on peut remplacer 	; un BSR label suivi 
d'un RTS par un BRA
	; c'est moins lisible ... a vous de voir

menu_wind2:
	; Attention : cette fentre est dclare CUSTOM
	; mais on ne gre aucun des messages de redraw
	; contrairement  le fentre 1 !
	; rsultat : le contenu est erratique
	; intressant malgr tout pour voir comment fat le GEM !

	lea objet_fenetre2,a0
	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND
	rts

menu_wind3:	lea objet_fenetre3,a0
	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND
	rts

menu_wind4:
	; Attention cette fentre a TOPABLE_STATE = -1
	; elle est donc un-untopable : jamais au second plan !
	; quand on ouvre une autre fentre, elle se re-top toute seule

	lea objet_fenetre4,a0
	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND
	rts

menu_wind5:	lea objet_fenetre5,a0
	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND
	rts

menu_wind6:	lea objet_fenetre6,a0
	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND
	; si elle existe dj elle ne sera pas cre

	lea objet_fenetre6,a0
	lea montexte,a1
	bsr GWVA_WTEXT_OBJ_PRG_WRITE_IN_WINDOW
	; met le texte dans la fentre et l'affiche
	rts

DATA
montexte:	dc.b "C'est nous les plus meilleurs du monde enti !",0
	even
TEXT
		*--------------------------*

menu_wind7:	lea objet_fenetre7,a0
	bsr GWVA_WIND_OBJ_PRG_TEST_IF_WIND_CREATED
	tst d7
	bpl.s .no

	lea image1,a0
	move #RAM_TT_ST,d0		; TT de prfrence sinon ST
	bsr LOAD_FILE_IN_MEM
	tst.l d0
	ble.s .no

	; Image 16 couleurs
	; on charge un fichier avec l'image au format cran en premier
	; taille : 640*480 * 4 bits
	; puis la palette : 16 couleurs = 16*32 bits

	move.l a0,a2		; adresse de chargement
	lea objet_fenetre7,a0
	move.l GWVA_WIND_OBJ_SPEC_PTR(a0),a1
	move #640,GWVA_WBITM_OBJ_IMG_WIDTH(a1)
	move #480,GWVA_WBITM_OBJ_IMG_HEIGHT(a1)
	move #640,GWVA_WIND_OBJ_FIRST_W(a0)
	move #480,GWVA_WIND_OBJ_FIRST_H(a0)	: mise  jour des champs en 
direct
	move.l a2,GWVA_WBITM_OBJ_DATA_PTR(a1)
	add.l #640*480/2,a2		; taille de l'image en octets
	move.l a2,GWVA_WBITM_OBJ_PAL_PTR(a1)
	move #4,GWVA_WBITM_OBJ_NBR_BITPLANES(a1)

	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND
	lea objet_fenetre7,a0
	tst d7
	bmi event_window_bitmap_closed

.no:	rts

		*--------------------------*

menu_wind9:	lea objet_fenetre8,a0
	bsr GWVA_WIND_OBJ_PRG_TEST_IF_WIND_CREATED
	tst d7
	bpl.s .no

	lea image2,a0
	move #RAM_TT_ST,d0		; TT de prfrence sinon ST
	bsr LOAD_FILE_IN_MEM
	tst.l d0
	ble.s .no

	; Image TRUE-COLOR (65536 couleurs)
	; on charge un fichier avec l'image au format cran en premier
	; taille : 320*240 * 16 bits
	; pas de palette !

	move.l a0,a2
	lea objet_fenetre8,a0
	move.l GWVA_WIND_OBJ_SPEC_PTR(a0),a1
	move #320,GWVA_WBITM_OBJ_IMG_WIDTH(a1)
	move #240,GWVA_WBITM_OBJ_IMG_HEIGHT(a1)
	move.l a2,GWVA_WBITM_OBJ_DATA_PTR(a1)
	move #16,GWVA_WBITM_OBJ_NBR_BITPLANES(a1)
	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND
	lea objet_fenetre8,a0
	tst d7
	bmi.s event_window_bitmap_closed

.no:	rts

		*--------------------------*

menu_wind8:	lea objet_fenetre9,a0
	bsr GWVA_WIND_OBJ_PRG_TEST_IF_WIND_CREATED
	tst d7
	bpl.s .no

	lea image3,a0
	move #RAM_TT_ST,d0		; TT de prfrence sinon ST
	bsr LOAD_FILE_IN_MEM
	tst.l d0
	ble.s .no

	; Image 256 couleurs
	; on charge un fichier avec l'image au format cran en premier
	; taille : 320*240 * 8 bits
	; puis la palette : 256 couleurs = 256*32 bits

	move.l a0,a2
	lea objet_fenetre9,a0
	move.l GWVA_WIND_OBJ_SPEC_PTR(a0),a1
	move #320,GWVA_WBITM_OBJ_IMG_WIDTH(a1)
	move #240,GWVA_WBITM_OBJ_IMG_HEIGHT(a1)
	move.l a2,GWVA_WBITM_OBJ_DATA_PTR(a1)
	add.l #320*240,a2
	move.l a2,GWVA_WBITM_OBJ_PAL_PTR(a1)
	move #8,GWVA_WBITM_OBJ_NBR_BITPLANES(a1)
	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND
	lea objet_fenetre9,a0
	tst d7
	bmi.s event_window_bitmap_closed

.no:	rts

		*--------------------------*

event_window_bitmap_closed:
	; Il n'y a qu'un seul malloc pour l'image et la palette
	; donc on ne fait qu'une libration

	bsr GWVA_WIND_OBJ_PRG_DELETE_ONE_WIND
	move.l GWVA_WIND_OBJ_SPEC_PTR(a0),a1
	MFREE GWVA_WBITM_OBJ_DATA_PTR(a1)
	rts

event_window_bitmap_fulled:
	; sur cette fentre on veut faire un traitement particulier :
	; un ALT+fentre FULL donne une namification (action spcifique V.A)
	; on demande donc  tre averti des EVNT_WIND_FULL avant leur traitement
	; (pour l'annuler) et on teste ici l'tat des touches spciales qui sont
	; dans GWVA_APP_OBJ_EVNT_MULTI_KS

	move GWVA_APP_OBJ_EVNT_MULTI_KS,d0
	and.w #%1000,d0			; touche ALT enfone ?
	beq.s .pas_alt

	bsr GWVA_WIND_OBJ_PRG_NAMIFY_UNAMIFY_ONE_WIND	; a0=ptr
	; c'est une fonction flip / flop

	moveq #-1,d7
	; bien sur il ne faut pas faire de FULL de la fentre !
	rts

.pas_alt:	clr d7
	rts

		*--------------------------*

event_window1_closed:
	; Ceci est  but didactique
	; on aurait pu le faire automatiquement en changeant les
	; proprits de la fentre ... GWVA_WIN_BIT_AUTODEL

	lea objet_fenetre1,a0
	bsr GWVA_WIND_OBJ_PRG_DELETE_ONE_WIND
	rts

event_window1_redraw:
event_window1_iconifiee_redraw:
	; Cette fentre tant CUSTOM la prise en charge du redraw doit tre
	; faite par le programmeur.
	; Peu importe son tat : normal ou iconifie, on fait un carr blanc
	; les coodonnes sont passes dans GWVA_WIND_OBJ_REDRAW_CLIP & d0-d3.w

	vswr_mode #MD_REPLACE
	vsf_color #0		; blanc
	v_bar 
GWVA_WIND_OBJ_REDRAW_CLIP,GWVA_WIND_OBJ_REDRAW_CLIP+2,GWVA_WIND_OBJ_REDRAW_CLIP+4,GWVA_WIND_OBJ_REDRAW_CLIP+6
	; une fentre blanche pour l'exemple ...

	rts

event_window1_moved:
	clr d7	; confirmer l'ordre de mouvement de l'utilisateur ? OUI !
	rts

wind1_tool_obj1_click:
	; Ceci est  but didactique

	; on est averti que l'utilisateur a cliqu un bouton de la toolbar
	; on recoit dans d0 son numro

	rts

fenetre1_control_c:
	; Ceci est  but didactique

	; si on est ici c'est que CTRL+C a t press ... on peut dfinir ainsi
	; une liste de raccourcis et y associer facilement une action spciale.

	rts

		*--------------------------*

event_window3_created:		; WM_BEFORE !
	clr d7		; mettre -1 pour empcher la cration
	rts

event_window3_opened:
	; On sauve l'aspect du formulaire pour le restaurer si l'utilisateur
	; fait cancel

	save.l a0
	move #FORMULAIRE3,d0
	move #%1111,d1		; sauver l'apparence & textes
	move.l #0,a0		; rserver un malloc !
	bsr GWVA_WFORM_OBJ_PRG_SAVE_FORM
	move.l a0,a1
	load.l a0
	tst d7
	bmi.s .erreur	; annule l'ouverture si pas pu sauver
	move.l a1,GWVA_WIND_OBJ_USER_PTR1(a0)
	clr d7
.erreur:	rts

wind3_bton_cancel_click:
	; l'utilisateur a cliqu sur Cancel on remet l'apparence prcdente !

	save.l a0
	move.l GWVA_WIND_OBJ_USER_PTR1(a0),a0
	move #FORMULAIRE3,d0
	move #%1111,d1		; restaurer l'apparence & les textes
	bsr GWVA_WFORM_OBJ_PRG_RESTORE_FORM
	load.l a0

	move #0,d0			; premier objet 0 : le pre
	move #7,d1			; profondeur 7
	clr d2			; l'intrieur
	bra GWVA_FORM_WIND_OBJ_PRG_REDRAW_PART	; bsr+rts = bra

event_window3_closed:
	; on rend le malloc o est la sauvegarde de l'apparence du formulaire

	save.l a0
	MFREE GWVA_WIND_OBJ_USER_PTR1(a0)
	load.l a0
	clr.l GWVA_WIND_OBJ_USER_PTR1(a0)
	clr d7			; confirmer la fermeture
	rts

event_window3_redraw:
	clr d7
	rts

wind3_bton_ok_click:
	; Sur un OK dans le fentre 3 on ouvre la 1 qui est spciale ...

	; on ne teste pas si elle est dj ouverte, dans ce cas on nous
	; renerra un message d'erreur et l'action sera annule.

	lea objet_fenetre1,a0
	bsr GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND
	rts

popup1_changed:
	; Ceci est  but didactique

	; on est averti que l'utilisateur a chang la slection du popup1
	; dans le fentre 3.
	; on recoit dans d1 ... la nouvelle slection

	rts

radio_bton_click:
	; Ceci est  but didactique

	; on est averti que l'utilisateur a cliqu un nouveau bouton
	; dans le fentre 3.
	; on recoit dans d1 ... la nouvelle slection

	rts

w3_option1_unselct:
	; Ceci est  but didactique

	; on est averti que l'utilisateur a cliqu sur un bouton slectionnable
	; mais non exit (donc pas d'vnement CLICK) et plus spcialement que ce
	; bouton vient de remonter ! cool !

	rts

event_text2_warning_clicked:
	rts
event_text2_gotfocus:
	rts
event_text2_lostfocus:
	rts
event_text2_changed:
	rts

		*--------------------------*

event_window6_arrowed:
	; exemple de message pas trs intressant mais bon ... c'est possible

	rts

		*--------------------------*

	section DATA

wind_icon1:	incbin winicon1.raw
wind_icon2:	incbin winicon2.raw

texte:	dc.b 'Genuwax for the best : ',0

	ifnd OPT_FULL_PATHNAMES
image1:	dc.b 'start16.raw',0
	else
image1:	dc.b 'd:\assemble\visual40\start\start16.raw',0
	endc

	ifnd OPT_FULL_PATHNAMES
image2:	dc.b 'start32k.raw',0
	else
image2:	dc.b 'd:\assemble\visual40\start\start32k.raw',0
	endc

	ifnd OPT_FULL_PATHNAMES
image3:	dc.b 'start256.raw',0
	else
image3:	dc.b 'd:\assemble\visual40\start\start256.raw',0
	endc

mask:	dc.b '*.S,*.BAK',0
even

END
