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
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|