Accueil > Forum > > > > case WM_KEYDOWN marche pas quand je suis dans un contrôle.
case WM_KEYDOWN marche pas quand je suis dans un contrôle.
samedi 18 août 2007 à 17:49:40 |
case WM_KEYDOWN marche pas quand je suis dans un contrôle.

paramotdam
|
Bonjour, Quand je lance mon programme et que j'appuie sur la touche Entrer, le programme va bien dans VK_RETURN et exécute "SendMessage(MaFenetre, WM_COMMAND, ID_B_ENVOYER, 0);". Si je met mon curseur dans un contrôle (par exemple editbox), quand j'appuie sur Entrer, rien ne se passe :S. Comment puis-je faire ? Voici mon code : /************************************/ case WM_KEYDOWN: switch(wParam) { case VK_RETURN: SendMessage(MaFenetre, WM_COMMAND, ID_B_ENVOYER, 0); break; default: break; } return 0; /************************************/ J'ai une autre question : J'aimerais savoir si c'est possible de donner le focus à mon editbox en cliquant sur un bouton. Du genre : case "clique bouton" : setfocus(editbox); // c'est cette ligne qu'il me faudrait, si c'est possible. Merci, Damien
|
|
samedi 18 août 2007 à 19:13:17 |
Re : case WM_KEYDOWN marche pas quand je suis dans un contrôle.

juju12
|
Réponse acceptée !
SetFocus(hButtonWnd) tout simplement. Pour ton problème y a une source déposée récemment traitant d'un truc similaire (MOUSEMOVE sur un contrôle).
|
|
samedi 18 août 2007 à 21:29:15 |
Re : case WM_KEYDOWN marche pas quand je suis dans un contrôle.

paramotdam
|
pour ma première question, c'est ok, merci.
Mais pour la deuxième, je n'ai pas trouvé le post correspondant à MOUSEMOVE. Si tu as le lien, se m'aiderait...
Damien
|
|
dimanche 19 août 2007 à 11:36:18 |
Re : case WM_KEYDOWN marche pas quand je suis dans un contrôle.

juju12
|
C'est la source de rt15 encore dans la liste du sommaire, "savoir quand la souris est sur un contrôle".
|
|
dimanche 19 août 2007 à 14:16:30 |
Re : case WM_KEYDOWN marche pas quand je suis dans un contrôle.

racpp
|
Réponse acceptée !
Salut, Tu crées un bouton , visible ou non, ayant comme style BS_DEFPUSHBUTTON et comme identificateur IDOK comme ceci: hBouton=CreateWindowEx(0, "Button", "Ok",
WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON , 20, 20, 60,
20, hwndparent, (HMENU)IDOK, 0, 0); A l'appui sur la touche Entrée, et ce quelque soit le controle ayant le focus, ta fenêtre mère recevra WM_COMMAND avec le hwnd du bouton et son identificateur. A toi de choisir lequel des deux utiliser. Si le parent est une boite de dialogue tout marchera directement. Si c'est une fenêtre normale, la boucle des messages devrait ressembler à ceci: MSG Msg; while (GetMessage(&Msg, NULL, 0, 0)) { if (!IsDialogMessage(hwnd, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } }
|
|
lundi 20 août 2007 à 10:48:32 |
Re : case WM_KEYDOWN marche pas quand je suis dans un contrôle.

paramotdam
|
merci beaucoup, sa marche au top ! Saurait tu me dire ce qu'est exactement IsDialogMessage(hwnd, &Msg), histoire de comprendre un peu  . Je ne même pas eu besoin de mettre un "case" pour l'appui sur "Enter". On dirait que sa quand on appui sur entré, sa actionne le bouton ayant l'identifiant le plus petit : #define ID_M_ENVOYER 1 Quand je met "#define ID_B_EFFACER" à 1 et "#define ID_M_ENVOYER" à 2 alors quand j'appui sur entré, sa actionne effacer.
|
|
lundi 20 août 2007 à 15:29:14 |
Re : case WM_KEYDOWN marche pas quand je suis dans un contrôle.

racpp
|
Une boite de dialogue a sa propore boucle des messages. Cette dernière traite les messages du clavier comme l'appui sur les touches TAB, Enter, les flèches etc. Ce n'est pas le cas avec les fenêtres normales. IsDialogMessage() permet de vérifier si ces messages sont traités. Si oui elle retourne 1, sinon elle retourne 0. Elle retournera donc 0 pour une fenêtre. Dans ce cas, on appelle TranslateMessage() et DispatchMessage() afin de les transmettre à la procédure de la fenêtre. Le comportement que tu as remarqué est tout à fait normal car 1 correspond à l'identificateur IDOK comme défini dans winuser.h: #define IDOK 1 #define IDCANCEL 2 #define IDABORT 3 #define IDRETRY 4 #define IDIGNORE 5 #define IDYES 6 #define IDNO 7 Evite donc de réutiliser les valeurs d'identificateurs déjà utilisées. Tu peux prendre des valeurs supérieures à 100 par exemple.
|
|
Cette discussion est classée dans : contrôle, case, wm, return, keydown
Répondre à ce message
Sujets en rapport avec ce message
Question sur les WM_* [ par guitoulefoux ]
Bonjour,J'ai une petite question.J'ai un code de se type:(en super simplifié)[...]switch(mssg) { case WM_KEYDOWN: if(Param == VK_UP) { mes
Problème avec WM_KEYDOWN: [ par cognac ]
Pourquoi est-ce que "j" est toujours égal à 2 lorsque je presse F1(même la première fois). Je pensais qu'à chaque fois que je presse F1 "j" augmente d
Problème menu [ par LordBob ]
Bonjour a tous,voila j'ai ecrit le tout début d'un programme... celui ci pour l'instant, ne fait que se ranger dans la systray... j'ai commencé a fair
WM_MOUSELEAVE [ par JackosKing ]
Pkoi j'ai l'erreur suivante:E:\tmp\TinyShell\Twiny.cpp(89) : error C2065: 'WM_MOUSELEAVE' : undeclared identifierquabnd je fais: case WM_MOUSEMOVE :
petite question sur les message [ par LordBob ]
bonjour a tous,voila mon code est structuré comme ca:BOOL CALLBACK Dialog(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){switch(msg){case WM_INI
probleme.. wm_syscommand [ par Gizmoz ]
J'ai un problème lorsque je crée une fenetre windows, normal sans mfc, et que je traite le msg wm_syscommand de la facon suivante:case WM_SYSCOMMAND :
C/API Win32 - Problème avec System Try.... [ par JimyRyan ]
Bonjour.J'ai un programme d'on j'ai créé une interface graphique en C/API Win32.Mon derrnier problème avant de cloturer le developpement de mon prog e
CreateWindowEx [ par Galmiza ]
Salut,J'ai fait une application en plein ecran en utilisant la fonction CreateWindowEx et directX. (pour l'instant j'ai desactivé les textures)L'appui
Pb de changement de curseur (SetClassLong) [ par AlexMAN ]
Voila, J'essaye de changer le curseur lorsk l'utilisateur survole un controle static, j'utilise (a linstar de BruNews) la fonction SetClassLong mais c
WM_KEYDOWN et dialog box [ par AlexMAN ]
Bonjour, Je me demande sil est possible d'utiliser le message WM_KEYDOWN dans une dialog box, paske j'essaie depuis une bonne heure, mais ca n'a pas l
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|