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

  FORUM HardWare.fr
  Programmation
  C++

  [Win32] detecter enter dans une edit_box

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Win32] detecter enter dans une edit_box

n°570353
red factio​n
Posté le 19-11-2003 à 00:07:51  profilanswer
 

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?
 
 

mood
Publicité
Posté le 19-11-2003 à 00:07:51  profilanswer
 

n°570355
red factio​n
Posté le 19-11-2003 à 00:08:35  profilanswer
 

jtutilise pas mfc (juste le win32 bas niveau)

n°570404
Konar
Posté le 19-11-2003 à 01:54:51  profilanswer
 

j'en sais rien, mais avec un coup de spy++ tu devrais trouver en 10 min.

n°570503
Anerty
Posté le 19-11-2003 à 10:34:51  profilanswer
 

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'.

n°570645
red factio​n
Posté le 19-11-2003 à 12:38:40  profilanswer
 

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  :D ) mais pour le reste   :fou:


Message édité par red faction le 19-11-2003 à 12:38:47
n°570649
red factio​n
Posté le 19-11-2003 à 12:41:40  profilanswer
 

http://www.microsoft.com/middleeast/msdn/images/image003.jpg http://www.microsoft.com/middleeast/msdn/images/image004.jpg
 
 :whistle:  
 
 
 :lol:


Message édité par red faction le 19-11-2003 à 12:42:21
n°570665
red factio​n
Posté le 19-11-2003 à 13:16:41  profilanswer
 

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"


Message édité par red faction le 19-11-2003 à 13:18:12
n°570679
antsite
Je me souviens
Posté le 19-11-2003 à 13:33:38  profilanswer
 

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.

n°570695
hellbilly
free smile
Posté le 19-11-2003 à 13:53:30  profilanswer
 

Il faut que tu rediriges les messages de tes composants vers une fonction. Si ton edit est IDC_EDIT, tu fais :

Code :
  1. WNDPROC oldProc = (WNDPROC)SetWindowLong(GetDlgItem(hwnd, IDC_EDIT), GWL_WNDPROC, (LONG)ZeProc);


Ensuite ta fonction callback ressemble a ca :

Code :
  1. LRESULT CALLBACK ZeProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  2. {
  3.   int id = GetDlgCtrlID(hwnd);
  4.   if (id == IDC_EDIT)
  5.   {
  6.     switch (uMsg)
  7.     {
  8.       case WM_KEYDOWN :
  9.         if (wParam == VK_TAB)
  10. {
  11. // Touche tab...
  12. }
  13. if (wParam == VkKeyScan(0x0D))
  14. {
  15. // Touche entree...
  16. }
  17. break;
  18. }
  19. }
  20. return CallWindowProc(oldProc, hwnd, uMsg, wParam, lParam);
  21. }


 
 

n°570856
red factio​n
Posté le 19-11-2003 à 16:20:41  profilanswer
 

[:xp1700] 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

mood
Publicité
Posté le 19-11-2003 à 16:20:41  profilanswer
 

n°570863
red factio​n
Posté le 19-11-2003 à 16:26:07  profilanswer
 

hellbilly a écrit :

Il faut que tu rediriges les messages de tes composants vers une fonction. Si ton edit est IDC_EDIT, tu fais :

Code :
  1. WNDPROC oldProc = (WNDPROC)SetWindowLong(GetDlgItem(hwnd, IDC_EDIT), GWL_WNDPROC, (LONG)ZeProc);


Ensuite ta fonction callback ressemble a ca :

Code :
  1. LRESULT CALLBACK ZeProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  2. {
  3.   int id = GetDlgCtrlID(hwnd);
  4.   if (id == IDC_EDIT)
  5.   {
  6.     switch (uMsg)
  7.     {
  8.       case WM_KEYDOWN :
  9.         if (wParam == VK_TAB)
  10. {
  11. // Touche tab...
  12. }
  13. if (wParam == VkKeyScan(0x0D))
  14. {
  15. // Touche entree...
  16. }
  17. break;
  18. }
  19. }
  20. return CallWindowProc(oldProc, hwnd, uMsg, wParam, lParam);
  21. }


 
 
 


 
on peut pas virer le oldproc ? ca fait une var globale en + :sweat:  
 
et les var globales c mal  :o

n°570871
hellbilly
free smile
Posté le 19-11-2003 à 16:31:23  profilanswer
 

red faction a écrit :

[:xp1700] 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


Et la msdn ?
msg a envoyer a ton edit : EM_LIMITTEXT

n°570883
hellbilly
free smile
Posté le 19-11-2003 à 16:42:10  profilanswer
 

red faction a écrit :


 
on peut pas virer le oldproc ? ca fait une var globale en + :sweat:  
 
et les var globales c mal  :o  


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


Message édité par hellbilly le 19-11-2003 à 16:58:27
n°571016
red factio​n
Posté le 19-11-2003 à 19:02:28  profilanswer
 

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?
 

n°571159
hellbilly
free smile
Posté le 19-11-2003 à 23:47:56  profilanswer
 

red faction a écrit :

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?
 
 


http://www.codeguru.com/richedit/richeditrc.html


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

  [Win32] detecter enter dans une edit_box

 

Sujets relatifs
[UltraEdit] comment exécuter un code en C sous Ultra Edit ?[Delphi] Afficher le resultat d'une operation dans un controle Edit
[C++] Win32 boutons image et image de fond[win32] fenêtre transparente ET clickable
Detecter la modification d'un fichier[win32][newbie] Empecher un controle edit d'afficher son menu
[win32] dll, import et calling convention...[c/c++] Edit_box
detecter des caracteres speciaux dans une macros XLS 
Plus de sujets relatifs à : [Win32] detecter enter dans une edit_box


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