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 :

[MFC]Touche ALT


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par d�faut [MFC]Touche ALT
    Bonjour

    J'ai besoin d'intercepter l'�v�nement lorsque l'on appui sur la touche ALT.
    Avec On_KeyDown, j'intercepte le message Appui sur la touche CTRL, SHIFT, mais pas ALT.

    Comment faire ?

    Y a t il un autre message Windows � intercepter ?

    Merci d'avance

  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
    Par d�faut
    salut,
    dans la faq j'ai traite le CTRL + Shift.:
    http://c.developpez.com/faq/vc/?page...hiftorCtrlDown
    pour le ALT gauche:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    #define IsAltDown()( (GetKeyState(VK_LMENU) & (1 << (sizeof(SHORT)*8-1))) != 0   )
    a tester dans le message WM_SYSKEYDOWN.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par d�faut
    Merci de m'avoir repondu si vite.

    Je viens d'essayer.
    j'ai copi� dans le cpp de ma classe CMainFrame

    #define IsAltDown()( (GetKeyState(VK_LMENU) & (1 << (sizeof(SHORT)*8-1))) != 0 )

    et ca ne marche pas ; je n'arrive pas a intercepter le message WM_SYSKEYDOWN.

    D'autre part je n'ai pas trouv� dans class Wizard le message WM_SYSKEYDOWN.
    Je l'ai donc fait � la main.

  4. #4
    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
    Par d�faut
    re,
    dans classwizard sur la fenetre/controle en question selectionne l'onglet classinfo et mets windows dans message filter apres tu reviens sur l'onglet message maps et tu trouves le message...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par d�faut
    Merci pour le truc !

    J'ai donc bien une m�thode On_SysKeyDown mais qui n'est pas appel�e lorsque j'appui sur la touche ALT

  6. #6
    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
    Par d�faut
    re,
    quelle est la nature de la fenetre ou controle ou tu fais le test ?
    pour mon exemple j'ai fais �a dans une classe deriv�e d'un CEdit.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par d�faut
    J'ai une application SDI.
    J'intercepte le message WM_SYSKEYDOWN dans la classe CMainFrame

  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
    Par d�faut
    dans ce cas quelle est le type de la fenetre principale ?
    une CView ,CFormView etc....

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par d�faut
    J'ai une classe CWinApp, une classe CVIew et ma classe CFrameWnd dans laquelle l'essai d'intercepter le message WM_SYSKEYDOWN

  10. #10
    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
    Par d�faut
    essaye d'intercepter le message sur la CView .

  11. #11
    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
    Par d�faut
    je viens de faire l'essai dans le contexte indiqu�: SDI fenetre CView j'ai intercept� le message sur la view �a fonctionne.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par d�faut
    Le resulat est le meme, ca ne marche pas

  13. #13
    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
    Par d�faut
    quelle combinaison de touches tu fais attention c'est le ALT gauche et on ne peut pas tout intercepter a cause des raccourcis claviers et des sequences windows par defaut.
    mon test est le suivant:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #define IsAltDown()( (GetKeyState(VK_LMENU) & (1 << (sizeof(SHORT)*8-1))) != 0   )
    void CTestsdi2View::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    	// TODO: Add your message handler code here and/or call default
    	if(IsAltDown())
        {
            TRACE("\nAlt");
        }
     
    	CView::OnSysKeyDown(nChar, nRepCnt, nFlags);
    }

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par d�faut
    Faut il ajouter le code suivant pour intercepter le message ?

    #define IsAltDown()( (GetKeyState(VK_LMENU) & (1 << (sizeof(SHORT)*8-1))) != 0 )

  15. #15
    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
    Par d�faut
    ,j'ai modifi� mon post precedent un define ou :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void CTestsdi2View::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
       // TODO: Add your message handler code here and/or call default
       if(( (GetKeyState(VK_LMENU) & (1 << (sizeof(SHORT)*8-1))) != 0 ))
        {
            TRACE("\nAlt");
        }
     
       CView::OnSysKeyDown(nChar, nRepCnt, nFlags);
    }

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par d�faut
    Mon probleme dans un premier temps est que je m'arrive jamais � entrer dans la fonction OnSysKeyDown lorsque j'appui sur ALT.



    Si j'ai bien compris, je test par le code suivant si la touche ALT a ete enfonc�e

    if(( (GetKeyState(VK_LMENU) & (1 << (sizeof(SHORT)*8-1))) != 0 ))
    {
    TRACE("\nAlt");
    }

  17. #17
    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
    Par d�faut
    salut,
    reponse oui mais tu m'a pas repondu :
    quelle combinaison de touches tu fais attention c'est le ALT gauche et on ne peut pas tout intercepter a cause des raccourcis claviers et des sequences windows par defaut.
    je rajouterai : la touche alt est un peu particuliere sous windows alors attention ..
    le projet SDI avec une CView que j'ai cr�� pour l'occasion fonctionnne parfaitement ....

Discussions similaires

  1. [c++] Hook "anti-rebond" et probl�me touches ALT
    Par jambono dans le forum Windows
    R�ponses: 4
    Dernier message: 06/12/2006, 23h25
  2. Interdire les touche ALT F4
    Par phoon dans le forum Access
    R�ponses: 1
    Dernier message: 08/03/2006, 17h24
  3. Fiche et Touche ALT
    Par kymine dans le forum Langage
    R�ponses: 2
    Dernier message: 03/09/2005, 19h31
  4. [MFC] Touche clavier
    Par ArkAng3 dans le forum MFC
    R�ponses: 8
    Dernier message: 22/03/2005, 06h50
  5. [MFC] Ctrl/Alt+touches avec PostMessage
    Par Fladnag dans le forum MFC
    R�ponses: 4
    Dernier message: 10/02/2004, 14h33

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