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] Probleme Key Events


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut [MFC] Probleme Key Events
    Bonjour,

    voila, j'ai cr�e une boite de dialogue (CDialog) MFC et je n'arrive pas � intercepter les touches press�s avec l'event OnKeyDown (et OnKeyUp)... rien ne se passe..

    Help me plizzzzzzzz

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Par d�faut
    le message WM_HOTKEY

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ON_MESSAGE(WM_HOTKEY, OnHotKey)
    il faut enregistrer pr�alablement ta HotKey par RegisterHotKey puis la d�senregistrer et apres :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void
    CAboutDlg::OnHotKey( WPARAM wParam, LPARAM lParam )
    {
     UINT iHotKeyId = (UINT)wParam;
     UINT iOptions = (UINT)HIWORD( lParam );
     UINT iVKeyCode = (UINT)LOWORD( lParam );
     
     CString t;
     t.Format( "HotKey #%i pressed, (%i+%i)", iHotKeyId, iOptions, iVKeyCode );
     AfxMessageBox( t );
    }

  3. #3
    Nouveau membre du Club
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    Merci beacoup pour cette reponse, effectivment ca marche mais il y a un probleme, c'est que c'est une global hotkey et je developpe un plug in pour un logiciel qui a lui aussi ses hotkeys... Comment faire pour que la hotkey ne soit associ� que a ma boite de dialogue et non pas a tout WINDOWS...

    Merciiiiiiiii

    Vainsoul

  4. #4
    Nouveau membre du Club
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    Peut etre qu'il existe une autre solution ???

  5. #5
    Nouveau membre du Club
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    Les events de la souris ne sont pas pris en compte egalement... cela doit etre un probleme de handle, focus.. car dans ma boite de dialogue j'ai egalement des sliders etc... et apparement c'est le slider qui shop les events...

    Help me !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  6. #6
    Membre �prouv�
    Inscrit en
    Avril 2004
    Messages
    122
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par d�faut
    Bonjour,
    Ton probl�me doit venir du fait que ce sont tes contr�les qui attrapent les �v�nements claviers et souris, si tu veux que ce soit ta dial, regarde du c�t� de ON_NOTIFY et WM_NOTIFY.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    Merci pour ta r�ponse mais ca ne marche toujours pas voila ce que j'ai fait.

    Ma boite de dialogue a pour id IDD_MAINDLG, j'ai donc rajouter dans mes message map :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ON_NOTIFY(NM_KEYDOWN,IDD_MAINDLG,OnkeyPress)
    Ainsi que la fonction OnkeyPress :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    void MainDLG::OnkeyPress(NMHDR* pNMHDR, LRESULT* pResult)
    {
       AfxMessageBox("KeyPressed");
    }
    et bien sur dans le .h :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    afx_msg void OnkeyPress(NMHDR* pNMHDR, LRESULT* pResult);
    Et tout cela ne change rien c'est toujours mes autres controles qui shop l event... Quand j appui sur la touche fleche droite par exemple, c'est le slider qui est inclut dans ma MAINDLG qui intercept l event, le slider avance vers la droite....

  8. #8
    Membre �prouv�
    Inscrit en
    Avril 2004
    Messages
    122
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par d�faut
    Salut,

    Il faut que tu mettes

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    ON_NOTIFY(NM_KEYDOWN,IDD_CHILD_CTRL,OnkeyPress)
    L'id que tu dois mettre dans le ON_NOTIFY est l'id du controles qui doit te renvoyer l'event.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    ..................................ARGGGGGGGGGGGHHHHHHHHHHHHHHHHHHH..........

    Ca marche toujours pas .... . En fait ce que je fait c'est un lecteur vid�o... donc dans ma boite de dialogues il y a plusieurs control : boutons (play, pause, stop), sliders (volume et position), un checkbox, et un control pour l image... j'ai essay� d appliquer le ON_NOTIFY a chaque control et meme a tous en meme temps, et cela ne fonctionne pas... voila comment j instancie ma boite de dialogue :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    	WND = new MainDLG();
    	WND->Create(IDD_MAINDLG,theApp.GetMainWnd()); 
    	WND->ShowWindow(SW_SHOW);
    Dans ma classe MainDLG, j'ai mis tout les messages tels que par exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    	ON_BN_CLICKED(IDC_PAUSEb, OnBnClickedPauseb)
    	ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, OnNMCustomdrawSliderVol)
    Plus les ON_NOTIFY pour les keys .. :


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    	ON_NOTIFY(NM_KEYDOWN,IDC_SLIDER2,OnkeyPress)
    	ON_NOTIFY(NM_KEYDOWN,IDC_SLIDER1,OnkeyPress)
    	ON_NOTIFY(NM_KEYDOWN,IDC_STATIC1,OnkeyPress)
    	ON_NOTIFY(NM_KEYDOWN,IDC_CHECK_SYNCRO,OnkeyPress)
    et jamais il va dans mon OnKeyPress I donunderstand

  10. #10
    Membre �prouv�
    Inscrit en
    Avril 2004
    Messages
    122
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par d�faut
    Bon, regarde du cot� de la fonction PreTranslateMessage, tu devrais peut-�tre trouver ton bonheur.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    Tout d abord je voudrais te remercier de m'aider pour mon probleme...
    Par contre le Pretranslatemsg ne marche pas non plus...
    C'est bizar parcequ'il y a des message qui passe sans probleme tel que OnPaint, OnDestroy, OnClose, OnTimer... mais tout ce qui touche au clavier ou souris.. rien ne passe. Il doit y avoir un truc ke je fait en trop ou que je fais pas... car meme dans le pretranslatemessage rien ne se passe, j'ai juste mi un afxmessagebox dans cette fonction et il s affiche que si je clik sur le menu par exemple mais pas kan j appui sur une touche ou ke je clik avec la souris sur autre chose que le menu... Vraiment je comprend pas... c'est tout bete en + comme code...

    voila comment j'instancie ma boite de dialogue :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    __declspec(dllexport)MStatus MFCDoIt(const MArgList& argList)
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
     
    	WND = new MainDLG();
    	WND->Create(IDD_MAINDLG,theApp.GetMainWnd()); 
    	WND->ShowWindow(SW_SHOW);
    	return MS::kSuccess;
    }
    la fonction MFCDoIt est appel� automatiquement par le logiciel qui utilise ce plugin...

    ensuite je fais tout dans ma classe MainDLG qui herite de CDialog... cette classe contient quelques controles :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	CSliderCtrl c_SliderVol; // slider du volume
    	CButton PlayButton; // bouton play
    	CButton PauseButton; // bouton pause
    	CButton StopButton; // bouton stop
    	CStatic c_Static; // Fenetre vidéo..
    	CSliderCtrl c_Slider; // slider de position ds le media
    	CStatic Status_Bar; // status bar
    	CButton is_sync; // syncronisation avec le logiciel
    	CButton h_rewind; // bouton retour rapide
    	CButton h_foward; // bouton avance rapide
    lorsque j appui sur les touches fl�ch�, le slider de position bouge... mais pas moyen d intercepter... pareil lorque j appuie sur la barre espace c le bouton ki a le focus qui s enclenche...
    En ce qui concerne la souris, c'est kif kif, j intercepte pas les click sur la fenetre... bref c'est la !**df!!��???...
    Si quelqu'un avait une solution... j'en ai vraiment besoin de ces touches ...

    Merci

    VainSouL

  12. #12
    Membre �prouv�
    Inscrit en
    Avril 2004
    Messages
    122
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par d�faut
    Salut,
    Don apparemment, ta boite de dialog se trouve dans une dll, et c'est ce qui poserait probl�me.

    Regarde ce lien, c'est expliqu� : http://msdn.microsoft.com/library/de..._.Overview.asp

Discussions similaires

  1. probleme Key event
    Par champity dans le forum D�buter
    R�ponses: 2
    Dernier message: 24/04/2009, 17h11
  2. Probleme de Key event sur le module Graphique
    Par Dlieu dans le forum Caml
    R�ponses: 5
    Dernier message: 05/12/2007, 18h17
  3. [Irrlicht] Probleme avec event.KeyInput.Key
    Par samiblide dans le forum Irrlicht
    R�ponses: 1
    Dernier message: 09/07/2007, 01h46
  4. [MFC ]Probleme de linkage d'une dll
    Par Lysis dans le forum MFC
    R�ponses: 9
    Dernier message: 22/01/2004, 14h51
  5. [MFC] probleme de rafraichissement d'une image
    Par Vestaproman dans le forum MFC
    R�ponses: 6
    Dernier message: 09/01/2004, 23h59

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