Un objet texte à positionner n'importe oùstruct s_texte struct s_gui gui ; commun à tous les objets de la GUI adresse_ecran defw ; position écran adresse_chaine defw ; pointeur sur la chaine endstructL'objet n'est pas interactif, il va nous permettre de construire l'écran avant les interactions, on pourraappeler différentes routines d'affichage pour le texte, par exemple une routine qui affiche les caractèresà la verticale.On va ajouter des caractères graphiques typiques des interfaces MSDOS ^_^ Voici notre fonte mise à jour  Et les nouvelles définitions de caractères qu'on ajoute à la suite dans guiGlobal.asm
; décoration dans la fonte cadre_arron_hg=caractere_etendu : caractere_etendu+=1 cadre_horiz_h =caractere_etendu : caractere_etendu+=1 cadre_arron_hd=caractere_etendu : caractere_etendu+=1 cadre_verti_d =caractere_etendu : caractere_etendu+=1 cadre_arron_bg=caractere_etendu : caractere_etendu+=1 cadre_arron_bd=caractere_etendu : caractere_etendu+=1 cadre_verti_g =caractere_etendu : caractere_etendu+=1 cadre_horiz_b =caractere_etendu : caractere_etendu+=1Le code de gestion de l'affichage horizontal va être aussi simple que... ...ça GUITexteHGestion ; code ignoré, on affiche ld hl,(ix+s_texte.adresse_chaine) : exx ld de,(ix+s_texte.adresse_ecran) jp GUIDisplayStringÀ peine moins simple, l'affichage vertical va découper le texte en morceaux, calculer l'adresse suivante...GUITexteVGestion ld hl,(ix+s_texte.adresse_chaine) ld de,(ix+s_texte.adresse_ecran) .reloop ld a,(hl) : or a : ret z : ld (GUISingleChar),a push hl,de exx : ld hl,GUISingleChar : exx call GUIDisplayString pop de : ld hl,80 : add hl,de : ex hl,de pop hl : inc hl jr .reloop ; GUISingleChar defb 0,0Dans notre POC, on va se créer un cadre, c'est un peu laborieux, on se fera des primitives plus tard. D'abord les chainesutilisant nos nouveaux caractères et ensuite des structures qui vont dérouler lors de l'initialisation et affichernos chaines horizontalement et verticalement.cadre_haut defb cadre_arron_hg : defs 24,cadre_horiz_h : defb cadre_arron_hd,0 cadre_bas defb cadre_arron_bg : defs 24,cadre_horiz_b : defb cadre_arron_bd,0 cadre_gauche defs 2,cadre_verti_g : defb 0 cadre_droite defs 2,cadre_verti_d : defb 0 NULL=0struct s_texte tt01 ,1,GUITexteHGestion ,0,tt02 ,NULL,#C000+80*0,cadre_haut struct s_texte tt02 ,1,GUITexteHGestion ,0,tt03 ,NULL,#C000+80*3,cadre_bas struct s_texte tt03 ,1,GUITexteVGestion ,0,tt04 ,NULL,#C000+80*1,cadre_gauche struct s_texte tt04 ,1,GUITexteVGestion ,0,check1,NULL,#C000+80*1+50,cadre_droite struct s_checkbox Check1 ,1,GUICheckBoxGestion ,1,Check2,Check2,#C000+80*1+2,0,0,'Première coche' ; première sélectionnée struct s_checkbox Check2 ,1,GUICheckBoxGestion ,0,Check1,Check1,#C000+80*2+2,0,0,'Deuxième coche'Et voilà le résultat :) 
Pour les fichiers, ça se passe [ ICI ] Roudoudou CPCrulez[Content Management System] v8.732-desktop/c Page créée en 277 millisecondes et consultée 25 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|