Vaughn018
Messages postés55Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention14 janvier 2005
-
17 mars 2004 à 14:55
Vaughn018
Messages postés55Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention14 janvier 2005
-
19 mars 2004 à 12:08
Rebonjour,
J'ai un code d'erreur 5 (ERROR_ACCESS_DENIED) avec la fonction TranslateAccelerators(). Les fonctions appelés avant comme LoadAccelerators et PeekMessage marchent pourtant bien apparemment... Que dois-je en conclure?
A noter que j'appelle cette fonction dans le 'case WM_INITDIALOG' de mon programme.
merci d'avance
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 17 mars 2004 à 20:35
je ne suis pas sur que tu puisse utiliser cela avec des Dialogues, puisque ce sont des fenêtres spéciales qui ne recoivent pas certains messages, mais je ne suis pas sur
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 17 mars 2004 à 23:23
Sur une dialogbox on met un hook, solution la plus simple.
Je pense avoir deja mis un exemple de cela.
Tu as juste a intercepter les touches qui t'interessent et pour chacune tu postes un WM_USERxxx.
Vaughn018
Messages postés55Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention14 janvier 2005 18 mars 2004 à 12:17
Le hook a été mis mais toujours ACCESS_DENIED (erreur 5)...
Ton exemple de MessageBox fonctionne mais ce que j'ai mis à la place dans le MsgFilterProc est la ligne suivante :
PostMessage(lpmsg->hwnd,1030,wParam,lParam);
L'objet 1030 faisant référence à un des boutons du dialogue.
Merci de m'aider sur ce coup je touche à la fin de mon prog svp!!
Vaughn018
Messages postés55Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention14 janvier 2005 18 mars 2004 à 12:22
Oui je précise que mon but est bien de détourner la touche ENTER et d'autres vers des boutons en particulier (sans passer par les DEFPUSHBUTTON pour certaines raisons... déjà paskil n'y a qu'un seul DEFPUSHBUTTON par fenetre).
Vaughn018, Siaïeï handler...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Vaughn018
Messages postés55Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention14 janvier 2005 18 mars 2004 à 13:44
Merci encore, mais toujours access denied.... je finis par croire que c'est du au fait que la fenetre de dialogue appartient au logiciel dans lequel s'intègre mon programme... d'ou le access denied puisque la fenetre concernée ne serait qu'une fenetre child. Je peux toujours essayer avec le HWND parent ou avec le HINSTANCE...?
Vaughn018
Messages postés55Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention14 janvier 2005 19 mars 2004 à 10:38
En ce qui concerne le HWND c'est le bon puisque ton exemple avec un message box qui s'ouvrait fonctionne (et je mets le meme hwnd dans la fonction postmessage à savoir lpmsg->hwnd... ce qui n'est peut etre pas bon?). J'ai essayé de faire une copie en variable globale du hwnd dont je suis sur, meme un pointeur mais toujours la meme erreur d'accès.
C'est quand meme bizarre que l'on me refuse l'accès pour les messages et pas pour les messagebox...
La seule solution serait de faire carrément appel à la fonction qui doit intervenir dans l'évènement ENTER key, mais ce serait bcp de chamboulement dans un code assez lourd (rien que pour créer cette fonction que l'on puisse appeler de nimporte ou).
Vaughn018
Messages postés55Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention14 janvier 2005 19 mars 2004 à 11:42
Juste une dernière question : comment faire pour que le Msg filter proc n'agisse que pour la fenetre en cours?
Le mien agit sur toutes les fenetres et je n'arrive pas à faire un EndDialog() des fenetres autres que la principale à partir de mon msg filter proc... erreur 1420 (not a valid window)
merci encore!
Vaughn018
Messages postés55Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention14 janvier 2005 19 mars 2004 à 11:59
Ah oui ça doit etre ma tension le problème ;)
Pour comparer je peux pas ce sont pas des variables globales tous ces hwnd (et elles ne peuvent pas l'etre, ça appartien au DialogProc). Sauf si je fais une copie bien entendu mais une copie de hwnd... je sens que c'est pas le top!
Et pour faire agir msgfilterproc que dans une fenetre que dois-je changer?
a+
Vaughn018
Messages postés55Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention14 janvier 2005 19 mars 2004 à 12:06
ouf non c'est réglé te dérange pas, la copie de HWND ça marche et en les mettant en global c'est bon aussi.
Je fatigue j'avoue, mais jvais avouer un autre truc je te déteste qu'une erreur me résiste si longtemps mais après tout ce n'est que de la prog microsoft!!!!! (je sais c'est une excuse minable mais jsuis pas fan voilà le message est passé ;) )
a+
Vaughn018, Siaïeï handler...