Problèmes de pointeurs
15 sujets de 1 à 15 (sur un total de 17)
- 1
- 2
-
Je suis en train d’écrire un programme sur mon amiga 1200
J’utilise le language E et je sais ouvrir des écran intuition en 256 couleurs (quel progrès, un prog os friendly !!)
Cepandant, j’ai des phases de calcul un peu longues et j’aimerai trouver un truc pour faire apparaitre le pointeur de la souris en forme de montre, et le remetre sous forme de flèche apres le traitement.
L’idéal serai de me fournir un bout de code en E, mais avec une routinne assembleur, je me démerderai aussi.
P.S. Si vraiment je ne trouve pas, je me ferai autrement.
Merci par avance a celui(ou celle) qui me donnera la solution miracle.
humm, dans le f***ing manuel, je trouve pas mieux que SetPointer.
Rien des le E.guide ni dans le beginner.guide.
J’écris :
PROC main()
ecran := OpenS(320,256,8,0,’toto’)
win := OpenWindowTagList(0,[WA_CUSTOMSCREEN, ecran, WA_BACKDROP,-1,WA_FLAGS,WFLG_BORDERLESS+WFLG_ACTIVATE+WFLG_RMBTRAP,WA_IDCMP,IDCMP_RAWKEY,0])
SetWindowPointerA(ecran,win,WA_BUSYPOINTER)
ENDPROC
Résultat, ca compile, ca ne plante pas (miracle), 50 % est du charabia pour moi, mais j’ai toujours ma flèche.
Et le TAG_NONE, je ne sais pas quoi en faire
Baba a écrit :
humm, dans le f***ing manuel, je trouve pas mieux que SetPointer.
Rien des le E.guide ni dans le beginner.guide.
J’écris :
PROC main()
ecran := OpenS(320,256,8,0,’toto’)
win := OpenWindowTagList(0,[WA_CUSTOMSCREEN, ecran, WA_BACKDROP,-1,WA_FLAGS,WFLG_BORDERLESS+WFLG_ACTIVATE+WFLG_RMBTRAP,WA_IDCMP,IDCMP_RAWKEY,0])
SetWindowPointerA(ecran,win,WA_BUSYPOINTER)
ENDPROC
Résultat, ca compile, ca ne plante pas (miracle), 50 % est du charabia pour moi, mais j’ai toujours ma flèche.
Et le TAG_NONE, je ne sais pas quoi en faire
Qu’est ce qui se passe si « OpenS(320,256,8,0,’toto’) » retourne NULL ?
Bye
Si le OpenS(320,256,8,0,’toto’) retourne NULL, ou plutot NIL pour les puriste du E,
On obtient :
– dans le meilleur des cas un joli plantage avec pleins de couleurs clignottantes, des bandes de couleurs et des bout d’images étranges qui s’affichent de facon subliminale
– dans un cas plus classique un « Software failure » inscrit dans un cadre rouge clignotant
– au pire un blocage lamantable de la machine
Il faut alors virer les images de fond et les comodities qui squattent la mémoire destinée a mon programme
ou bien il faut créer un fichier spécial de démarrage pour lancer mon programme.
Ex 1) toto.e (contenant tout ca) se compile vers le fichier exécutable toto
2) créer un fichier texte dans le même répertoire nommé runtoto contenant ces quelques lignes :
memrun runtoto RESET
setpatch
toto
3) éditer l’icone du fichier runtoto, et le définir en tant que projet
4) mofifier l’information de l’icone, et metre IconX dans l’outil par défaut
5) double cliquer sur le fichier runtoto pour executer le programme
(il faut bien sur avoir la commande memrun dans son répertoire C:)
résultat, le programme se lancera apres un reset de l’amiga, et on est sur d’avoir suffisament de ressource pour le faire fonctionner correctement.
P.S on pourrait aussi tester le résultat de OpenS, ou jouer avec les exceptions pour quitter le programme sans plantage en cas de ressources faible du système, mais un reset sur l’amiga ca prends 3 secondes, c’est pas catastrophique !!!
/* les aléats de l’amiga sont impénétrables /*
– dans le meilleur des cas un joli plantage avec pleins de couleurs clignottantes, des bandes de couleurs et des bout d’images étranges qui s’affichent de facon subliminale
– dans un cas plus classique un « Software failure » inscrit dans un cadre rouge clignotant
– au pire un blocage lamantable de la machine
Ouch…
Il y a pas de condition en E pour ne pas crasher si une ressource
n’est pas dispo ?
PS: cela expliquerai bien des choses avec ANR ;-P.
Bye
@Nicholas, Yomgui et les autres :
Faut lire les messages jusqu’au bout :
P.S on pourrait aussi tester le résultat de OpenS, ou jouer avec les exceptions pour quitter le programme sans plantage en cas de ressources faible du système, mais un reset sur l’amiga ca prends 3 secondes, c’est pas catastrophique !!!
L’a de l’humour ce Baba.
Baba a écrit :
c’est bon, j’ai trouvé
un SetWindowPointerA(win,[WA_BUSYPOINTER,TRUE,0]) me donne entière satisfaction
Grand merci
Le TAG_DONE est destiné à remplacer ton 0 disgrâcieux.
Baba a écrit :
humm, dans le f***ing manuel, je trouve pas mieux que SetPointer.
Rien des le E.guide ni dans le beginner.guide.
Cherche du côté des autodocs.
Elles sont disponibles gratuitement dans le NDK de l’os3.9 (et à ma connaissance, c’est la seule version des autodocs qui soit gratuitement accessible).
CONST
ERR_OPENSCREEN = 0
PROC main
DEF scr
IF (scr := OpenS(patati, patata)) = NIL THEN RAISE ERR_OPENSCREEN
EXCEPT
WriteF(‘Le programme s »est arrété pour cause d »échouage de l »ouverture de l »écran’)
ENDPROC
A ce niveau, on peu encore rajouter un IF exeption = ERR_OPENSCREEN à quelque part
Et dire que c’est presque la partie la mieux programmée… arf
Je passerai sous silences les parties en assembleur où des MOVE D6,BLTSIZE auraient pu être remplacé par des BltMaskBitMapRastPort()…, mais je fait ce que je peux avec ce que j’ai.
Je compile maintenant des programme ou il n’y a plus le warning :
warning : code outside procs
par ex :
PROC main
MOVE #3,D1
JSR toto
ENDPROC
toto:
MOVE #4,D0
IF D0 = D1 THEN WriteF(toto)
ADD #1,D1
mais enfin, tant que ca compile et que ca tourne comme je veux, ca passe
2eme question sur les pointeurs :
Je sais facilement passer du poineur montre à la flèche, mais je ne sais pas comment cacher le poineur.(comme les mouse blanker, ou la touche Del sous Dpaint)
Qui sais maintenant comment on cache le pointeur ?
Si le programme de Baba plante pour impossibilité d’ouvrir l’écran car il ne test pas son retour c’est soit que:
– vous n’aviez pas asser de mémoire vidéo pour vous permettre de lancer le soft.
– vous avez réglé vos modeid comme des porcs.
N’importe qui osant lancer un soft dans ces conditions mérite de planter.
15 sujets de 1 à 15 (sur un total de 17)
- 1
- 2
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › Problèmes de pointeurs