Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1234 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C/C++][Win32] PreTranslateMessage sans MFC: detect key press

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++][Win32] PreTranslateMessage sans MFC: detect key press

n°315944
antsite
Je me souviens
Posté le 23-02-2003 à 18:53:30  profilanswer
 

Salut,
Comment faire pour intercepter un message avant que celui-ci soit "envoyé" dans la boucle des messages, en gros je voudrais savoir si l'on peut utiliser une fonction du genre PreTranslateMessage des MFC...
merci
   ANT


Message édité par antsite le 24-02-2003 à 11:40:15
mood
Publicité
Posté le 23-02-2003 à 18:53:30  profilanswer
 

n°316217
antsite
Je me souviens
Posté le 24-02-2003 à 10:28:40  profilanswer
 

:bounce:

n°316255
gatorette
Posté le 24-02-2003 à 11:09:55  profilanswer
 

Ben tu appelle juste ta fonction "PreTranslateMessage" dans ta boucle de "traîtement" des messages.
Un truc comme par exemple :

Code :
  1. while( ::GetMessage( &msg, NULL, 0, 0 ) )
  2. {
  3. if( PreTranslateMessage( &msg ) )
  4. {
  5. ::TranslateMessage( &msg );
  6. ::DispatchMessage( &msg );
  7. }
  8. }


---------------
each day I don't die is cheating
n°316276
antsite
Je me souviens
Posté le 24-02-2003 à 11:20:12  profilanswer
 

Moi j'ai un WinMain et je n'utilise pas les MFC donc à priori MSDN à l'appui je ne vois pas comment utiliser la fonction PreTranslateMessage membre de la classe CWnd /CWinThread / CWinApp, mais bon je peux me tromper ! Help!
 
En fait le but est le suivant:
Je veux faire éxécuter qqch à mon prog quand on appui sur F3 par exemple. Seulement voila quand c'est mon edit ou ma liste qui a le controle et bien le message WM_KEYDOWN n'est pas envoyé à mon app...
La solution de bricolage serait dans chaque controle de détecter si F3 et après de procédé à l'appel de la fonction, mais bon...
Donc existe-t-il un moyen de regarder si on a appuyer sur une touche mais peu importe quel controle a le focus... ?


Message édité par antsite le 24-02-2003 à 11:43:16
n°316571
gatorette
Posté le 24-02-2003 à 15:11:10  profilanswer
 

ANTSite a écrit :

Moi j'ai un WinMain...


Donc si tu as un WinMain, tu as bien quelque part un truc du genre :

Code :
  1. while( ::GetMessage( &msg, NULL, 0, 0 ) ) 
  2. {
  3. ::TranslateMessage( &msg );
  4. ::DispatchMessage( &msg );
  5. }


 
Et donc, avant de faire le TranslateMessage et le DispatchMessage, tu fais un appel à ta fonction PreTranslateMessage que tu codes tout seul. Tu peux bien évidemment l'appeler MaFonctionQuiTraiteLesMessagesAvantWindows ou ce que tu veux d'autre. La fonction que j'ai appelée PreTranslateMessage dans le code du message précedent est une fonction que tu codes comme tu veux (ce n'est pas celle des MFCs).
 
Par exemple :  

Code :
  1. BOOL PreTranslateMessage( MSG *pMsg )
  2. {
  3. if( (msg.hwnd == gEditHwnd) && (msg.message == WM_KEYDOWN) && (((int)msg.wParam) == VK_F3) )
  4. {
  5. return FALSE;
  6. }
  7. else
  8. {
  9. return TRUE;
  10. }
  11. }


 
C'est plus clair, maintenant ?


---------------
each day I don't die is cheating
n°316605
antsite
Je me souviens
Posté le 24-02-2003 à 16:11:28  profilanswer
 

Ouh la oui je me suis complètement planté, j'avais pas compris, pardon et merci beaucoup pour cet éclaircissement!
 :hello:  
 
P.S. : Je me présenterais bien comme boolay officiel de Gatorette moi!

n°316609
gatorette
Posté le 24-02-2003 à 16:18:43  profilanswer
 

Je pense à un truc : tu peux peut être essayer cette méthode pour capturer l'appui sur la touche Entrée. Cela résoudrait peut être ton autre problème.
Malgré tout, c'est quand même une méthode pas très "propre" (mais bon, si ça marche...).


---------------
each day I don't die is cheating
n°316795
HelloWorld
Salut tout le monde!
Posté le 24-02-2003 à 19:01:05  profilanswer
 

Citation :

Donc existe-t-il un moyen de regarder si on a appuyer sur une touche mais peu importe quel controle a le focus... ?

 
oui, les Accelerator ... C'est + simple, + propre, et fait exprès !
http://www.schaudin.via.t-online.d [...] lation.htm


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°316808
antsite
Je me souviens
Posté le 24-02-2003 à 19:12:36  profilanswer
 

J'avais complètement oublié cette solution que j'ai déjà utilisée, en effet c'est l'idéal et ça marche nickel
 :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C/C++][Win32] PreTranslateMessage sans MFC: detect key press

 

Sujets relatifs
[C/C++] [Win32] Eviter le beep lors d'un Entréeles MFC en mode console?
[C/C++] [Win32 API] Récupérer le nom du dossier contenant ce programme[MFC] RichEdit: SetWordCharFormat == SetSelectionCharFormat ?
[MFC] Comment savoir si une fenêtre MDI est partiellement visible ???en Win32, comment déterminer si un contrôle est "enabled" ou non ?
[Win32] Forcer l'ecriture sur un fichier utilisé par un autre process[win32 vs6] application console vs service
VC++, MFC : zigouiller un repertoire non vide...[MFC] Masquer le curseur de souris
Plus de sujets relatifs à : [C/C++][Win32] PreTranslateMessage sans MFC: detect key press


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR