Comment changer le focus d'un edit Text a un autre

Résolu
sadounno Messages postés 34 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 20 février 2014 - 3 janv. 2014 à 08:19
sadounno Messages postés 34 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 20 février 2014 - 3 janv. 2014 à 14:57
Bonjour,

je debute en asm, et j'utilise RadAsm pour developper une application de gestion de fichier patients.
j'utilise plusieurs edit box / edit text; mais j'arrive pas a intersepter la touche entree/retur pour le focus entre les edit text.
je keydown ne reponds pas, j'ai essayéle wm_focus, mais j'rrive pas a controler.
j'ai essayé la sousclass, mais sa me donne juste le return de la premiere editText...
alors je bloque, si quelcun peut m'aider, ou me donner un petit exemple je serai reconnaissant
Merci
--

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 janv. 2014 à 10:27
Si fenetre mere est une DIALOG:

Focus sur un controle:
PostMessage(hdlg, WM_NEXTDLGCTL, (WPARAM) hCtrl, 1);
PostMessage(hdlg, WM_NEXTDLGCTL, 0, 0); // next ctrl
PostMessage(hdlg, WM_NEXTDLGCTL, 1, 0); // prev ctrl

ciao...
1
sadounno Messages postés 34 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 20 février 2014
Modifié par sadounno le 3/01/2014 à 10:38
merci pour la réponse; mais je debute, alors essai de me dire impeut plus stp
j'aimerai savoir où inserer les postmessage; et comment savoir que j'ateint le control que je veux.
esquil ya un petit exemple

Merci pour l'aide
0
sadounno Messages postés 34 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 20 février 2014
Modifié par sadounno le 3/01/2014 à 11:45
En fin je croix avoir compris et trouvé
.ELSEIF eax == WM_COMMAND
mov eax, wParam

.if((wParam)==IDOK)
invoke PostMessage,hWnd, WM_NEXTDLGCTL, 0, 0; //permetde naviquer entre les edit control

.endif

Merci beaucoup pour l'aide BruNews
0
sadounno Messages postés 34 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 20 février 2014
3 janv. 2014 à 11:57
vette methode n'est bien qui s'il ya que des edit controls;
mais je trouve un probleme quand j'ai des bouton, et listbox avec...
es quil ya pas une autre solution??
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 janv. 2014 à 12:59
Sur une DIALOG,

le message WM_NEXTDLGCTL fonctionne pour tout ctrl acceptant le focus, que soit bouton ou autre.

Autre sujet:
Tu dis débuter en ASM, en ce cas laisse tomber cette syntaxe de pseudo ASM qui ne t'apprendra strictement rien. Soit tu fais du vrai ASM en vue d'optimisation maximale, soit tu écris en C.

ciao...
1
sadounno Messages postés 34 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 20 février 2014
3 janv. 2014 à 13:08
j'ai deja realisé des application en c, delphi, c++ et dernierement java.
c'est juste que je me met a l'assembleur pour comprendre encor mieux l'iformatique...
stp, donnes moi un bout de code comprehensible pour un novice qcomme moi, merci.
je me reexlique.
j'ai plusieurs edit boxes; et 2 bouton, je veux que quand j'apuis sur return sa declanche un evenement (ex: si le champ est vide ne rien faire sinon passer au prochan edit controle)
Help please
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 janv. 2014 à 13:38
Pour la suite, on dira que fenetre mere est DIALOG.

Si un ctrl EDIT n'a pas le style ES_WANTRETURN alors dialog reçoit un wParam == IDOK en mssg WM_COMMAND.
Si style ES_WANTRETURN est mis alors sous classer le EDIT et traiter WM_CHAR.

ciao...
1
sadounno Messages postés 34 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 20 février 2014
3 janv. 2014 à 14:24
j'ai essayé aussi de sous classer, mais je ne peux sousclasser que le 1er edit, comment faire pour les autres?
Merci pour les reponses c'est gentil
0
sadounno Messages postés 34 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 20 février 2014
3 janv. 2014 à 14:57
c'es OK sa fonctionne
je vous remerci de votre attention.
si il ya une autre methode je serai preneur.
Merci BruNews, vous m'avez ete d'un grand secour,
0
sadounno Messages postés 34 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 20 février 2014
3 janv. 2014 à 08:50
j'essay d'exploiter aussi la piste es_wantreturn (en le mettant a true), j'ai aussi essayé idok ... sans rien


 .ELSEIF eax == WM_COMMAND
mov eax, wParam


;.if((wParam)==IDOK)
.IF (ax==IDC_EDT2)

invoke GetDlgItem,hWnd,IDC_EDT3
invoke SetFocus,eax
invoke SetFocus,IDC_EDT3
là sa doit faire plus de 2 jours de recherche sans trouver ce qui cloche
--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 janv. 2014 à 13:42
J'insiste sur ce point:
pour tous ces tests de style de fenetre Windows et traitement des messages, il faut d'abord faire en C, ce sont des heurs de benef. L'ASM pour cela n'apportera RIEN du tout, un compilo C correct generera au moins du aussi bon code, voire meme beaucoup mieux comparé a un debutant.

ciao...
0
sadounno Messages postés 34 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 20 février 2014
3 janv. 2014 à 14:25
realiser tout en asm est un objectif personnel, j'essay pas de gagner du temps, mais juste d'apprendre
0
Rejoignez-nous