detecter enter dans une edit_box [Win32] - C++ - Programmation
Marsh Posté le 19-11-2003 à 01:54:51
j'en sais rien, mais avec un coup de spy++ tu devrais trouver en 10 min.
Marsh Posté le 19-11-2003 à 10:34:51
Le truc c'est qu'il t'envoie peut etre pas de message du tout. Vérifie que tu as mis le style ES_WANTRETURN sur ton edit et que qu'il a aussi ES_MULTILINE (sinon le 1er style sert a rien). Avec ca tu recevras le EN_CHANGE pour la touche enter, et il ne te restes plus qu'a tester si le dernier char de ton edit est un '\n'.
Marsh Posté le 19-11-2003 à 12:38:40
ok mais ca fait bricolage qd meme
pfff crosoft y mettent pleins d'options qui servent a rien dans leur os(genre Right to left layout dans le proprietes d'une boite de diag ) mais pour le reste
Marsh Posté le 19-11-2003 à 13:16:41
se serait plutot les caracteres \r\n a detecter non ??
mais bon ya une autre methode a mon avis car si on fait ctrl-enter y met \r\n aussi et dans msn si on fait ctrl-e ca nenvoie pas le msg , ca saute une ligne ....
help mon chat est vraiment penible a utiliser sans le "enter"
Marsh Posté le 19-11-2003 à 13:33:38
j'avais déjà eu ce problème...
le truc c'est que pour un edit simple (pas multiligne), le enter fait l'action associée au bouton par défaut.
Pour intercepter le enter, il faut passer par les messages non pas de l'edit mais de la fenetre, et donc regarder les WM_KEYDOWN, ... et si c'est enter et bien retourner false ou je sais plus quoi dans ta fonction callback de la boucle des messages.
Marsh Posté le 19-11-2003 à 13:53:30
Il faut que tu rediriges les messages de tes composants vers une fonction. Si ton edit est IDC_EDIT, tu fais :
Code :
|
Ensuite ta fonction callback ressemble a ca :
Code :
|
Marsh Posté le 19-11-2003 à 16:20:41
marche impec
sinon on peut limiter le nombre de char a placer dans une edit autrement quand faisant un getwindowtext puis en comptant le nombre de caracteres
Marsh Posté le 19-11-2003 à 16:26:07
hellbilly a écrit : Il faut que tu rediriges les messages de tes composants vers une fonction. Si ton edit est IDC_EDIT, tu fais :
|
on peut pas virer le oldproc ? ca fait une var globale en +
et les var globales c mal
Marsh Posté le 19-11-2003 à 16:31:23
red faction a écrit : marche impec |
Et la msdn ?
msg a envoyer a ton edit : EM_LIMITTEXT
Marsh Posté le 19-11-2003 à 16:42:10
red faction a écrit : |
euh c'est pas trop conseillé
Sinon tu peux utiliser une variable statique d'une classe, ou la mettre dans un namespace anonyme.
edit: tu peux aussi stocker dans ta fenetre des donnees (par exemple, un pointeur sur un objet) et tu les recupere avec la fonction GetWindowLong
Marsh Posté le 19-11-2003 à 19:02:28
ok merci tout est nikel maintenant
sinon jaimerai mettre des smileys dans mon edit box de chat.... faut une richedit pour ca ? c difficile a gerer?
et pour ca?
Marsh Posté le 19-11-2003 à 23:47:56
red faction a écrit : ok merci tout est nikel maintenant |
http://www.codeguru.com/richedit/richeditrc.html
Marsh Posté le 19-11-2003 à 00:07:51
j'ai essaye avec les differents messages que recoit une edit box mais pas moyen (detecter un changement ok mais pas le enter)
jai aussi essaye en mettant le bouton que je doit active qd on fait le enter sur default mais c pa bon puisque c ledit box qui a le focus ... help
--------------
sinon jaimerai mettre des smileys dans mon edit box de chat.... faut une richedit pour ca ? c difficile a gerer?