Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion d'une série de CEdit

1 réponse
Avatar
No_Name
Bonjour,

Dans une application MFC/C++ avec VS2005, j'ai créé une série de de
zones de saisie (CEdit) dont les ID se suivent.

Actuellement, pour passer de l'un à l'autre lorsque je saisis des
données, je dois utiliser la touche TAB.

Mon souhait serait de pouvoir saisir 2 chiffres dans chaque zone de
saisie, puis que le focus passe alors automatiquement sur la zone de
saisie suivante.

J'ai envisagé de créer une sous-classe de CEdit, puis de gérer moi même
le nombre de caractères saisis dans la fonction PreTranslateMessage de
ma classe, mais même comme cela, je ne vois pas comment je peux alors
donner le focus à la zone de saisie suivante. A moins de disposer
quelque part de la liste des ID etc.

Avant de me lancer dans de grands travaux, j'aimerais savoir si je ne
suis pas sur un mauvais chemin, et s'il n'y a pas une solution plus
simple et plus facile à mettre en oeuvre ?

Merci de vos conseils.

1 réponse

Avatar
Christian ASTOR
On 4 fév, 17:52, No_Name wrote:

Dans une application MFC/C++ avec VS2005, j'ai créé une série de de
zones de saisie (CEdit) dont les ID se suivent.
Actuellement, pour passer de l'un à l'autre lorsque je saisis des
données, je dois utiliser la touche TAB.

Mon souhait serait de pouvoir saisir 2 chiffres dans chaque zone de
saisie, puis que le focus passe alors automatiquement sur la zone de
saisie suivante.

J'ai envisagé de créer une sous-classe de CEdit, puis de gérer moi même
le nombre de caractères saisis dans la fonction PreTranslateMessage de
ma classe, mais même comme cela, je ne vois pas comment je peux alors
donner le focus à la zone de saisie suivante. A moins de disposer
quelque part de la liste des ID etc.

Avant de me lancer dans de grands travaux, j'aimerais savoir si je ne
suis pas sur un mauvais chemin, et s'il n'y a pas une solution plus
simple et plus facile à mettre en oeuvre ?



Pour passer le focus au contrôle suivant, ça peut se faire en postant
un WM_NEXTDLGCTL à la fenêtre parente.
Sinon, le C. Control "IP Address" fait la même chose que ton
traitement (4 Edit controls en child du contrôle principal), mais il
appelle SetFocus() sur WM_CHAR (en testant la position courante avec
EM_GETSEL), après avoir effectivement stocké les ID à la création.