none
Forcer la relecture par le narrator de la description d'un bouton CButton lorsque celui-ci a été mis à jour RRS feed

  • 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 ?

    lundi 19 août 2013 16:02

Réponses

Toutes les réponses