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é.