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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
On 4 fév, 17:52, No_Name <no_mail@no_mail.com> 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.
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.