cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 2007
-
26 déc. 2004 à 05:28
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 2007
-
26 déc. 2004 à 17:58
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 ?
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 26 déc. 2004 à 16:26
Créé ta dialog 'dynamikemen', a l'aide de DialogBoxIndirect(Param), c chiant, mais certainement moins ke de créer un fichier ressource a la main. Si tu veux des exemples, racpp utilise cette methode pour la creation de dialog, jete un coup d'oeil..
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 26 déc. 2004 à 09:45
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).
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 déc. 2004 à 12:34
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(...).
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 26 déc. 2004 à 13:45
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.
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 :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 26 déc. 2004 à 14:55
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 ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 déc. 2004 à 15:06
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.
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 26 déc. 2004 à 15:14
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 ;-)