j'ai lu quelque part qu'il n'était pas possible d'utiliser les Accelerators pour créer des raccourcis claviers dans une appli de type dialog. Existe-t-il un moyen de contourner ce problème??
Merci d'avance.
j'ai lu quelque part qu'il n'était pas possible d'utiliser les Accelerators pour créer des raccourcis claviers dans une appli de type dialog. Existe-t-il un moyen de contourner ce problème??
Merci d'avance.
regarde ce lien
http://www.codeguru.com/Cpp/W-D/disl...cle.php/c4965/
Ok merci matazz, c'est exactement ce que je veux... Cependant, j'ai un petit problème dans la mise en place:
En fait j'ai mis les mêmes ids dans l'accelerator table que sur mes menus et mes fonctions étaient donc déjà créées.After creating the accelerator table, use ClassWizard to add a handler for the id(s) you provided in the accelerator table. Then, you can do most anything in the handler that you need to do when the key is typed. If you do nothing in the handler, nothing happens when that key (combination) is typed.
j'ai donc la ligne suivante (par exemple) dans les messages maps
avec ID_WINDOWS_HIDE_HEADER qui correspond donc à la fois à la combinaison de touches Ctrl+h (dans l'accelerator table) et a un item du menu. Pourtant ma combinaison de touche ne marche pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part ON_COMMAND(ID_WINDOWS_HIDE_HEADER, OnWndShowHideHeader)
Ai je omis quelque chose??
Merci d'avance
Tu as bien surchargé PreTranslateMessage ?
->
Sinon as-tu essayé un accélérateur sans combinaison de touche ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST) if (m_hAccel && ::TranslateAccelerator (m_hWnd, m_hAccel, pMsg)) return TRUE;
J'ai bien surchargé la fonction PreTranslateMesssage, et meme essayé sans combinaison de touche... Ca ne marche pas
Je me suis fait un exemple simple et j'ai réussi à utiliser les accelerator. Ca doit venir de mon appli (peut etre le tab control qui fait que la fenetre courant e n'est pas celle de l'appli mais la dialog active du tabcontrol???:
: )
Je continue de chercher.
Merci en tout cas
Ca a un lien avec le tab control, c'est a peu pres sur, parce qu'en naviguant dans les onglets et en essayant les raccourcis clavier, ca finit par marcher...
Comment puis je faire pour que ca marche dès l'ouverture de l'appli sans avoir touché à aucun onglet???
Alors essaye te mettre le focus sur ta CDialog...
Ben oui je veux bien, mais va falloir que je le remette tout le temps, car dès que je toucherai au contenu du tabcontrol la dialog principale perdra le focus???
A ce moment la tu as deux solution :
->Intercepter la touche Tab et ne rien faire (mais tu perd la fonctionalité)
->Sur chaque évenement de tes controles rendre le focus à la fin à ta CDialog.
Ok merci, je vais essayer ca.
Pourquoi ne pas utiliser le message OnKeyDown?
Ca parait très pratique, mais je viens d'essayer, et je ne parviens pas à l'utiliser: il ne vient pas dans le fonction OnKeyDown() quand je presse une touche du clavier. Je ne comprends pas pourquoi.
Tu veux dire pour savoir quand redonner le focus à ma dialog principale??? C'est une bonne idée je n'y avais pas pensé... MerciEnvoyé par r0d
Oui, ça me semblait être une bonne idée, mais comme je l'ai dit, je ne parviens à le faire fonctionner.Envoyé par benahpets
![]()
Envoyé par matazz
je n'y arrive pas
J'ai essayé
mais ça ne marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part this->SetFocus();
Comment faire?
Partager