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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Raccourcis des menus & IsDialogMessage


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

Raccourcis des menus & IsDialogMessage

dimanche 26 décembre 2004 à 05:28:23 | Raccourcis des menus & IsDialogMessage

Nebula

Membre Club
Bonjour,

Lorsque j'utilise IsDialogMessage dans ma pompe à messages, les raccourcis correspondant à mon menu ne sont pas traités. Voici le code de la pompe en question :
while (GetMessage(&msg, NULL, 0, 0) > 0) {
if (IsDialogMessage(hWnd, &msg) == 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

Rien de très original donc. J'utilise les ressources pour créer un menu comme celui-ci :
MAINMENU MENU
BEGIN
POPUP "&Fichier"
BEGIN
MENUITEM "&Quitter", ITEMQUIT
END
POPUP "&Aide"
BEGIN
MENUITEM "A &propos...", ITEMABOUT
END
END

Lorsque que je supprime l'appel à IsDialogMessage, les raccourcis (ALT+F et ALT+A) sont traités correctement... Quid ?
dimanche 26 décembre 2004 à 09:45:53 | Re : Raccourcis des menus & IsDialogMessage

AlexMAN

Membre Club
Bonjour,

Je veux pas dire de betises, mais utiliser IsDialogMessage() bloque la reception de certains messages, tel que WM_KEYDOWN, ce qui pourrait empecher l'utilisation de raccourci CLAVIER.
Voila ce que jen pense (je te conseille de poser la question sur le NG Visual C++, si tu ne peux pas, je le ferais pour toi).

++

+2(p - n)
dimanche 26 décembre 2004 à 12:34:34 | Re : Raccourcis des menus & IsDialogMessage

BruNews

Administrateur CodeS-SourceS
Faudrait voir le contexte exact de ton prog pour repondre correctement.
Dans tous les cas, tu peux analyser ce qu'il y a dans ta struct msg juste dessous
while(GetMessage(&msg,....
et tu decides ainsi si tu fais la verif IsDialogMessage(...).

ciao...
BruNews, MVP VC++
dimanche 26 décembre 2004 à 13:45:55 | Re : Raccourcis des menus & IsDialogMessage

Nebula

Membre Club
Ben j'ai aussi une table de raccourcis claviers qui eux, sont bien gérés (j'ai testé çà un peu après avoir posté ici), seuls les ALT+XXX correspondant aux menus sont ignorés.

J'ai mis les sources courantes de mon programme ici : http://athanatos.free.fr/temp/perso/Nebulog.zip

C'est juste une ébauche, évidemment compatible MinGW et MSVC... resource.rc contient bien sûr les ressources, main.c la pompe à messages, et wndproc.c le gestionnaire de messages.

Examiner la structure MSG je veux bien, mais je ne vois pas trop quoi tester pour décider d'appeler ou non IsDialogMessage :-/

Merci à vous deux pour votre aide :)
dimanche 26 décembre 2004 à 13:57:07 | Re : Raccourcis des menus & IsDialogMessage

BruNews

Administrateur CodeS-SourceS
J'ai pris ton zip, je verrai des que possible.

ciao...
BruNews, MVP VC++
dimanche 26 décembre 2004 à 14:12:17 | Re : Raccourcis des menus & IsDialogMessage

Nebula

Membre Club
Ok je vire alors. AlexMAN si tu le veux aussi, envoie moi un MP ;-)
dimanche 26 décembre 2004 à 14:39:20 | Re : Raccourcis des menus & IsDialogMessage

BruNews

Administrateur CodeS-SourceS
mais pourquoi mets-tu IsDialogMessage() avec le hWnd de la fenetre parent ???
Son param devrait etre un hDlg valide si tu en as un a lui passer.

ciao...
BruNews, MVP VC++
dimanche 26 décembre 2004 à 14:55:26 | Re : Raccourcis des menus & IsDialogMessage

Nebula

Membre Club
Ben justement, je ne fais pas de Dialog et cette fenêtre va accueillir plusieurs contrôles enfants, et l'appel à IsDialogMessage est là pour gérer les appuis sur TAB et autres (la doc dit qu'on peut passer un HWND pour que cette fenêtre se comporte comme une boîte de dialogue).

Si j'ai bien suivi, il faudrait que je crée une fenêtre fille sur laquelle je placerais mes autres contrôles, et c'est sur son HWND que je devrais appeler IsDialogMessage ?
dimanche 26 décembre 2004 à 15:06:40 | Re : Raccourcis des menus & IsDialogMessage

BruNews

Administrateur CodeS-SourceS
ben oui, IsDialogMessage() est la pour controler les messages vers une eventuelle modeless dialog.

Pourquoi veux-tu reimplementer toute la logique d'une dialog ? si c'est de cela dont tu as besoin, fais carrement une dialog en fenetre mere, ça n'empeche pas du tout d'y mettre un menu et autres bidules.

ciao...
BruNews, MVP VC++
dimanche 26 décembre 2004 à 15:14:09 | Re : Raccourcis des menus & IsDialogMessage

Nebula

Membre Club
Certes, c'est ce que j'envisageais aussi, mais sans éditeur de ressources c'est assez ardu de se lancer dans les Dialog... Y'a bien quelques tutoriaux sur le sujet sur Google, mais ils n'expliquent que des exemples simples sans donner d'explications générales :-/

En rouvrant Petzold j'ai vu un chapitre "menus et autres ressources", je vais le lire en espérant y trouver ce que je cherche. Si tu as de la doc sur ce sujet, je suis preneur ;-)

1 2

Cette discussion est classée dans : menu, msg, begin, raccourcis, isdialogmessage


Répondre à ce message

Sujets en rapport avec ce message

Probleme WS_TABSTOP [ par fredsor ] Bonjour,Je mets bien WS_TABSTOP pour tous les composants créé (CreateWIndowEx... )et j'ai rajouté a la fin, while (GetMessage(&msg, NULL, 0, 0) > 0)   Créer un menu HMENU [ par ndubien ] Bonjour,Je cherche à savoir s'il est possible de créer un menu sans passer par les ressources du projet.Si oui  : comment?Merci d'av cocher l'item d'un menu [ par ndubien ] Bonjour,Je cherche à savoir: + comment cocher (check) l'item d'un menu ou sous-menu (après sa création)? + comment décocher (check) l'item d'un menu o Creer un menu ds richedit [ par Neo_Fr ] Bonjour, Est-ce que quelqu'un saurait comment ajouter un menu dans une richedit? génération du menu contextuel des fichiers [ par blubz ] bonjourDonc j'essai de générer ( dans une appli wxwidgets ) le menu contextuel offert par l'explorer de windows. J'ai trouvé ces documents fort utile probleme de matrice [ par diable007 ] bonjour, voila mon code: #include #include #include using namespace std;void main(){ int i,j;    vector > mathad2(2,vector&l Fonctions Imbriquées avec argument string [ par Zakata ] Bonjours,J'esaye de programmer deux classes de menu. L'architecture est la suivantes : Une classe Menuclass Menu{public:    Menu(void);    ~Menu(void) Pb de link avec cout et un char [ par Zakata ] Bonsoir à tous,J'ésaye de programmer une fonction qui affiche une variables de type char sur la console :void Menu::Display(void){    int Cpt;    for( Ameliorer code (msg.message==WM_KEYDOWN...) [ par Booster ] Bonjour à tous,Dans un sousi de rendre mon code le plus lisible possible j'aimerais savoir s'il n'y à pas une façons plus charmante, plus courte de co Changer couleur Menu Bar [ par Neo_Fr ] Bonsoir, Est ce possible de changer la couleur d'une menu bar?; si oui comment? Neo_Fr


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 : 1,576 sec (4)

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