IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Scrollbar et touches directionnelles


Sujet :

MFC

  1. #1
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut Scrollbar et touches directionnelles
    Bonjour,

    j'ai mis en place 2 scrollbar autour de ma fenetre OpenGL.
    Je voulais savoir comment est-ce qu'il est possible de gerer les deplacements des scrollbar via les touches directionnelles ?

    Merci.
    This is NOT my boyfriend's computer.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    la scrollbar gère les touches si elle a le focus.
    tu peux aussi intercepter les touches claviers dans ta fenêtre et envoyer un message clavier à l'ascenseur concerné (vertical ou horizontal)..

  3. #3
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Ah ok merci.
    Effectivement j'ai vu que parfois les touches etaient gerees mais je ne savais pas pourquoi.

    Par contre pour intercepter les touches directionnelles du clavier c'est bien avec OnKeyDown ?
    Je teste le nChar avec VK_DOWN, VK_UP, etc... mais rien n'y fait.
    Les lettres sont bien interceptees mais pas les fleches
    This is NOT my boyfriend's computer.

  4. #4
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Personne ?
    J'ai vu que les fleches etaient prevues pour les controles de l'application d'abord et qu'il faut donc changer les priorites ou inhiber les controles mais je ne trouve rien...
    J'aimerai que mes fleches soient interceptees par OnKeyDown dans ma fenetre OpenGL tout comme je le fais avec les caracteres.

    Merci
    This is NOT my boyfriend's computer.

  5. #5
    Membre confirmé Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Points : 521
    Points
    521
    Par défaut
    Salut,

    Oui c'est bien OnKeyDown

    voici un ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    void CMaClasse:OnKeyDown(UINT nChar,UINT nFlags)
    {
      switch (nChar)
      {
        case VK_LEFT:
        {
          // flèche gauche
          OnScroll(MAKEWORD(SB_LINELEFT,0xFF),0,TRUE);
          break;
        }
        case VK_RIGHT:
        {
          // flèche droite
          OnScroll(MAKEWORD(SB_LINERIGHT,0xFF),0,TRUE);
          break;
        }
        case VK_UP:
        {
          // flèche haut
          OnScroll(MAKEWORD(0xFF,SB_LINEUP),0,TRUE);
          break;
        }
        case VK_DOWN:
        {
          // flèche bas
          OnScroll(MAKEWORD(0xFF,SB_LINEDOWN),0,TRUE);
          break;
        }
        default:
        {
           CScrollView::OnKeyDown(nChar,nFlags);
           break;
        }
      }
    }
    Il faut s'assurer aussi que ta fenetre a le focus (fonction SetFocus()). Si tu ne veux pas que ta fenetre a le focus, tu peux intercepter OnSysKeyDown à la place (à condition que GetFocus()==NULL)

    @+

  6. #6
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Oui c'est bien ce que je fait et je donne bien le focus a ma fenetre mais des que je clique sur une fleche le focus revient automatiquement a ma boite de dialogue sur le premier de mes controles.

    Comment desactiver ca ?

    Merci !
    This is NOT my boyfriend's computer.

  7. #7
    Membre confirmé Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Points : 521
    Points
    521
    Par défaut
    je vois pas trop comment ton programme est structuré au niveau des fenetres ... pourquoi tu parles de boite de dialogue ???

    donnes moi plus d'infos sur le lien entre cette fenetre et ta boite de dialogue...

    @+

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    de toute façon c'est mort ,si tu as des contrôles tu ne peux espérer contrôler la scrollbar avec les touches si il y a des contrôles actifs dans la fenêtre de traitement .
    du point de vue de l'utilisateur je ne vois pas comment ça peut fonctionner ...

  9. #9
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Alors je reprends.
    J'ai une boite de dialogue avec des controles et une fenetre OpenGL.
    Oublions les scrollbar.
    J'aimerai effectuer des actions dans ma fenetre OpenGL quand j'appuie sur les fleches. Sauf que meme en ayant le focus dans ma fenetre, des que j'appuie sur l'une des fleches le focus revient automatiquement sur le premier controle de ma boite de dialogue.
    Aucun moyen de changer cela ?

    Merci.
    This is NOT my boyfriend's computer.

  10. #10
    Membre confirmé Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Points : 521
    Points
    521
    Par défaut
    Je pense a un WM_GETDLGCODE qui n'est pas pris en charge par ta fenetre OpenGL.

    Essaye ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UINT COpenGLCtrl::OnGetDlgCode()
    {
      return DLGC_WANTARROWS;
    }
    Sans oublier le ON_WM_GETDLGCODE() et le proto qui va bien ...

    Essaye d'autre variante aussi comme DLGC_WANTMESSAGE ...
    C'est assez capricieux comme fonction

    @+

  11. #11
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Ah super ca marche !

    Merci beaucoup, je ne connaissais pas du tout cette fonction...
    This is NOT my boyfriend's computer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/02/2008, 13h17
  2. Touches directionnels : annuler
    Par MayOL69bg dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/04/2007, 22h25
  3. ecrire une touche directionnelle dans un fichier excel
    Par aA189 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/08/2006, 20h41
  4. [gcc-unix] touches directionnelles
    Par yocco dans le forum C
    Réponses: 3
    Dernier message: 15/06/2006, 23h40
  5. Réponses: 8
    Dernier message: 18/09/2003, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo