begin process at 2012 05 30 11:06:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Raccourcis des menus dans une dialog


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Raccourcis des menus dans une dialog

mardi 28 décembre 2004 à 08:45:57 | Raccourcis des menus dans une dialog

Nebula

Membre Club
Bonjour,

J'utilise une DIALOG déclarée dans les ressources de mon programme et appelée avec DialogBox. Cette boîte de dialogue disposant d'un menu, j'aimerais savoir comment m'y prendre pour gérer les raccourcis correspondants (par exemple, Ctrl+O => Ouvrir) ? Auparavant j'utilisais TranslateAccelerator, mais là je n'ai pas de pompe à messages...

Merci d'avance pour votre aide.
mardi 28 décembre 2004 à 11:14:24 | Re : Raccourcis des menus dans une dialog

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Mets un hook sur ta dialog et pour chaque cas qui correspond a tes menus tu envoies un PostMessage(hdlg, WM_COMMAND, monID, 0);

ciao...
BruNews, MVP VC++
mardi 28 décembre 2004 à 14:42:46 | Re : Raccourcis des menus dans une dialog

Nebula

Membre Club
Merci, je m'y met de suite (çà va être pratique çà tiens !)
mardi 28 décembre 2004 à 17:01:19 | Re : Raccourcis des menus dans une dialog

Nebula

Membre Club
Bon j'ai mis mon hook local, et voici la procédure de hook (plus gérable que traiter manuellement les raccourcis) :

LRESULT CALLBACK MsgProc(INT nCode, WPARAM wParam, LPARAM lParam) {
if (nCode == HC_ACTION) {
TranslateAccelerator(hMainDlg, hMainAccel, (LPMSG) lParam);
}
return 0;
}

Mais comment dire à l'application que le message a été traité (c'est à dire que quand MsgProc se termine, passer au message suivant si TranslateAccelerator a déjà fait le travail) ?

Par exemple, j'ai un bouton "&Bouh" et un menu "&Bouh\aCtrl+B". Quand je fais Ctrl+B, çà affiche une MsgBox (celle du menu, j'ai vérifié en regardant HIWORD(wParam) dans la DlgProc), puis une autre MsgBox (celle du bouton, cette fois) ! Ce qui est assez contrariant :-/
mardi 28 décembre 2004 à 17:35:06 | Re : Raccourcis des menus dans une dialog

Nebula

Membre Club
J'ai trouvé un workaround, mais je ne sais pas si c'est très propre :

if (TranslateAccelerator(hMainDlg, hMainAccel, (LPMSG) lParam) != 0) {
ZeroMemory(lParam, sizeof(MSG));
}
mardi 28 décembre 2004 à 17:48:45 | Re : Raccourcis des menus dans une dialog

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Si on se sert d'un hook, on n'a pas besoin d'accelerator Table, c'est bien plus souple comme gestion et tu peux faire ce que tu veux.
Un exemple ici:
http://www.cppfrance.com/code.aspx?id=11007

ciao...
BruNews, MVP VC++
mardi 28 décembre 2004 à 18:00:26 | Re : Raccourcis des menus dans une dialog

Nebula

Membre Club
Aaah ouais, c'est carrément plus simple et efficace, en fait. Merci !


Cette discussion est classée dans : dialog, raccourcis, menus


Répondre à ce message

Sujets en rapport avec ce message

Desactiver le raccourcis clavier par defaut d'un dialog [ par SnOOpss ] Bonjour, j'ai crée un dialog tout bete via un fichier ressource et par defaut window m'attribue le raccourcis clavier espace au tout premier pushbutto Simuler appui sur X (croix en haut à droite) ET Question sur Dialog [ par mahojul ] Bonjour, Je développe en VC++ 6.0 sur un pc avec WinXP Pro SP3 et je suis un peu embêté ... (pour information, je sui Dialog MFC d'une DLL dans une application non MFC [ par auwel ] Voilà j'ai une dll (MFC partagée) qui contient une fonction permettant l'affichage d'une boîte de dialogue. Cette fonction fonctionne correctement si Modifier les menus du lecteur SumatraPDF [ par Fx44 ] Bonjour Je ne suis pas du tout programmeur, je n'y connais d'ailleurs pas grand'chose, mais ne sais pas trop à qui m'adresser : alors je poste ici, me Problème pour mettre une Dialog Modale au premier plan [ par ZMJUVENTINO ] Salut, je travaille sur Visual C++ 6Je voudrais à partir de mon application afficher une CDialog modale et qu'elle s'affiche absolument au premier pla Webdav et hack affreux [ par pierreact ] Bonjour, j'ai créé un logiciel qui entre autre utilise WNetUseConnection pour connecter windows a des partages webdav. Microsoft étant ce qu'il est, Plusieurs raccourcis clavier [ par ringo44 ] Bonjour j'aimerai savoir comment faire pour avoir 2 raccourcis clavier différents. Je m'explique dans une fenêtre j'ai déjà le raccourci suivant : m_h ShowHTMLDialogEx + HTMLDLG_MODELESS modale ?! [ par HeavenForsaker ] Bonjour,Je tente d'afficher une page HTML à l'intérieur d'une fenêtre, pour ce faire j'ai utilisé la fonction ShowHTMLDialogEx avec le flag HTMLDLG_MO Modal Dialog Box, Bug ! [ par Hades53 ] Bonjour à tous, je suis confronté à un petit problème, j'ai crée un dialog (style modal) mais quand j'utilise la fonction: DialogBox(), la boîte de di Appeler du code après que la Dialog soit chargée [ par Nixeus ] Bonjour à tous, Cela fais deux ans que je n'ai pas repratiqué de C++ en MFC? et j'ai beaucoup perdu. Je souhaite appeller du code une fois que me D


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales