J'aurai aimé avoir votre avis éclairé sur l'écriture et le contenu du code d'un logiciel de type éditeur de map.
Voici un screenshot de mon éditeur de map :
http://www.3arks.com/images/screenshots ... v0.4.1.jpg
Voici en gros comment se compose ma boucle principale :
Code : Tout sélectionner
Repeat
If (ElapsedMilliseconds() > CheckTime + 1000 / 60)
CheckTime = ElapsedMilliseconds()
update_Screen()
Else
Delay(5)
EndIf
event_Editor()
Until quit = 1
C'est une procédure qui affiche les sprites3D, puis les informations en startdrawing() comme le texte, ou des traits (pour une grille), etc.. tout cela sur le screen, et pas sur la fenêtre entière, le screen est au milieu de la fenêtre (voir le screenshot au dessus).
event_Editor()
C'est la procédure qui gère tous les events de mon programme. ça ressemble à ça :
Code : Tout sélectionner
Procedure event_Editor()
event = WaitWindowEvent(100)
If event
;{ update
update_general() ; procédure qui fait les update nécessaire, comme récupérer les coordonnées de la souris
;}
;{ keyboard
keyboard_event() ; gestion des évènements claviers (environ 15 events)
;}
Select event
;{ mouse event
Case #WM_LBUTTONUP
Case #WM_LBUTTONDOWN
Case #WM_RBUTTONDOWN
Case #WM_RBUTTONUP
Case #WM_LBUTTONUP
Case #WM_MOUSEMOVE
;}
Case #PB_Event_Menu
Select EventMenu()
;-- file
Case 0 ; menu N°1 : créer une nouvelle map
create_new_map()
;etc...
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case 1
; event pour le gadget N°1
;....
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case 0
exit() ; on ferme l'éditeur
; etc...
EndSelect
EndSelect
Else
dostuff() ; procédure qui rafraichit la fenêtre
EndIf
EndProcedure
D'après vous, est-ce une bonne organisation pour un éditeur de map ou un logiciel en général ?
Etant donné que je gère des panels, onglets, boutons et autres gadgets, + 1 screen à l'intérieur d'une même fenêtre, il arrive que le rafraichissement de la fenêtre prenne 1 seconde (par exemple, les boutons n'apparaissent pas tous d'un coup).
faut-il gérer ça comme ça, ou dois-je passer par les thread ou les callbacks pour certaines choses ?
Merci pour vos conseils
