Moi, ce genre de message me fait me pauser des questions !
Tu dis que ta procedure de fenêtre reçoit 4 WM_GetText.
Mais il sont adressé à quel objet de ta fenêtre ces 4 WM_GetText ?

Autre chose, Je n'ai pas de plage braille et ne peux donc vérifier avec,
Mais question sonorisation en PureBasic je n'ai pas tes symptomes.
Et, ce n'est pas impossible, mais je doute fort que les concepteurs de pure
basic ai fait des truc du genre ne pas réponde à 3 WM_GetText sur 4...
Ah mon avis, la vérité est ailleurs...

Je colle les ligne de code permétant de générer l'exécutable de test :
Si cela peut t'aider, je dois pouvoir récupérer la transposition ASM de ce
code.

EnableExplicit
Global EV
Procedure ActuStatus(Gadget)
  Protected Deb, Fin, Line, NbChar, Col, T$
  SendMessage_(GadgetID(Gadget),#EM_GETSEL,@Deb,@Fin) 
  Line = SendMessage_(GadgetID(Gadget),#EM_LINEFROMCHAR,Deb,0)
  NbChar = SendMessage_(GadgetID(Gadget),#EM_LINEINDEX,Line,0)
  Col = Deb - NbChar
  T$ = "Ligne " + Str(Line+1) + " Colonne "+ Str(Col+1)
  StatusBarText( 0, 0, T$ )  
EndProcedure

If OpenWindow(0, 0, 0, 400, 400, "Test StatusBar", #PB_Window_SystemMenu |
#PB_Window_ScreenCentered) 
  EditorGadget(0, 10,  10, 380, 360)
  If CreateStatusBar( 0, WindowID(0) )
    AddStatusBarField( 200 )
  EndIf
  SetActiveGadget( 0 )
  Repeat
    Ev = WaitWindowEvent()
    Select Ev
    Case #WM_KEYUP
      ActuStatus( 0 )
    EndSelect
  Until Ev = #PB_Event_CloseWindow
EndIf
End



-----Message d'origine-----
De : progliste-ow...@ml.free.fr [mailto:progliste-ow...@ml.free.fr] De la
part de QuentinC
Envoyé : jeudi 18 novembre 2010 19:35
À : progliste@ml.free.fr
Objet : [progliste] 6pad: solution trouvée pour l'annonce intempestive de la
barre d'état



Bonjour la liste,
J'ai enfin trouvé la solution pour éviter que jaws n'anonce sans cesse la
barre d'état dans mon éditeur de texte 6pad. Vous pourrez en profiter quand
la version beta 7 sortira, elle est prévue pour bientôt mais elle n'est pas
encore tout à fait terminée.

Au delà du fait de signaler cette petite victoire, je voulais vous faire par
de cette découverte dans un message dédié à ce sujet, parce que la solution
que j'ai trouvée le vaut bien je pense.

Vous avez sans doute remarqué qu'en plus d'annoncer de façon énervante cette
barre à chaque appui de touche, vous obteniez la mauvaise information. En
d'autre termes vous obteniez l'état de la barre un caractère en retard :
Au lancement du programme, la barre est sur ligne 1, colonne 1 En tapant une
lettre, la barre passe à l'écran à ligne 1, colonne 2, mais jaws annonce
ligne 1, colonne 1 En tapant une deuxième lettre, la barre passe à l'écran à
ligne 1, colonne 3, mais jaws annonce ligne 1, colonne 2 etc.

Je mets à jour la barre au moment où on relâche la touche (message WM_KEYUP)
avec SetWindowText. Malheureusement voici ce qui se passe à chaque appui de
touche dans la zone principale de l'éditeur :

Ma procédure de fenêtre pour la zone EDIT reçoit WM_KEYDOWN, une touche est
appuyée Ensuite, ma barre d'état, qui est une fenêtre de type STATIC, reçoit
quatre évènements WM_GETTEXT. Ces messages sont envoyés par jaws pour
récupérer le texte contenu dans la barre d'état. Pourquoi quatre et non pas
un seul, aucune idée.
Enfin, ma procédure de fenêtre pour la zone EDIT reçoit WM_KEYUP. Ce à la
suite de quoi ma barre est mise à jour... trop tard pour jaws qui a déjà
récupéré le mauvais texte.

Jaws utilise visiblement un système de cache. Autrement dit, il n'envoie pas
un message WM_GETTEXT à chaque fois qu'on appuie sur insert+page suivante
pour connaître le contenu de la barre d'état, ce qui lui permet d'être
rapide et de ne mettre à jour les affichages braille que quand c'est
nécessaire.

A chaque récupération de texte, jaws le compare avec celui qu'il possédait
déjà dans son cache. S'il a changé, alors il y a annonce du nouveau contenu.
C'est pour cette raison qu'à l'appui du premier caractère, jaws n'annonce
rien (vous pouvez essayer).

ON en arrive à une question: comment empêcher que jaws ne fasse une annonce
intempestivs à chaque mise à jour de la barre, tout en le laissant
actualiser son cache ? parce que si on l'empêche complètement de mettre à
jour son cache, alors insert+page suivante annoncera la mauvaise
information.

C'est alors que j'ai remarqué... qu'en acceptant le premier message
WM_GETTEXT mais en retournant FALSE aux trois suivants, le cache de jaws
était à jour mais plus rien était annoncé. Le meilleur ? même pas besoin de
scripts jaws !

Là où ça devient encore plus intéressant, c'est que même quand on masque la
barre à l'écran, jaws continue toujours d'envoyer des messages mais ne fait
plus jamais d'annonce. Autrement dit, il sait que la barre existe sans même
qu'elle ne soit visible.

Voilà, comme ça vous savez tout. JE pense que ce genre de message pourrait
vraiment être utile.



Progliste :
Pour se désinscrire de la liste :
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/       

Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé, je
vous répondrez en privé.

-- Binary/unsupported file stripped by Listar --
-- Type: application/x-msdownload
-- File: StatusBar.exe


Progliste :
Pour se désinscrire de la liste : 
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/       

Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé, je 
vous répondrez en privé.

Répondre à