Meilleur auteur de réponses
Forcer la relecture par le narrator de la description d'un bouton CButton lorsque celui-ci a été mis à jour

Question
-
Bonjour,
Petite présentation du contexte :
- j'ai un bouton CButton créé avec les propriétés suivantes : WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW|BS_FLAT|WS_TABSTOP
- ce bouton (et la fenêtre qui le contient) sont complètement dessiner (BS_OWNERDRAW) et afficher à l'écran via GDI+
- lorsque l'utilisateur clique (ou utilise la touche espace du clavier), ce bouton change de valeur (type toggle ou check box) et donc la méthode SetWindowText est appelée avec la nouvelle valeur
- et maintenant, le narrator ...
Afin de rendre plus accessible l'application, je corrige les bugs liés (entre autres) à l'utilisation du narrator. Et dans le cas présent, lorsque le bouton reçoit le focus, sa description est bien lue. En revanche, lorsque la valeur change, elle n'est pas relue (avec la nouvelle valeur)
J'ai essayé des appels comme
NotifyWinEvent(NotifyWinEvent(EVENT_OBJECT_STATECHANGE, OBJID_WINDOW, CHILDID_SELF)
mais, cela ne provoque aucune réaction du narrator.
Ma solution actuelle, simuler une action clavier (CTRL + SHIFT + ENTER)
keybd_event(VK_CONTROL, 0x9d, 0, 0);
keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), 0, 0);
keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), 0, 0);
keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0x9d, KEYEVENTF_KEYUP, 0);La description est bien lue, mais, les actions claviers aussi.
Savez-vous pourquoi la description de mon bouton n'est pas relue lorsque son état change ?
Réponses
-
Bonjour
Une idée un peu bette - forcer avec le code le Focus sur un autre button et après ça remettre le focus sur ce button.
Cordialement,
- Marqué comme réponse ABEA_94 mardi 20 août 2013 18:17
Toutes les réponses
-
Bonjour
Une idée un peu bette - forcer avec le code le Focus sur un autre button et après ça remettre le focus sur ce button.
Cordialement,
- Marqué comme réponse ABEA_94 mardi 20 août 2013 18:17
-