2008-09-18 9 views
1

Je suis en train de programmer une application en MFC (ne demandez pas) et j'ai une boîte CEdit qui contient un nombre. Quand ce numéro est édité, je voudrais agir sur le changement, et puis remplacer le signe d'insertion où il était avant que j'ai agi sur le changement - si l'utilisateur était juste avant le "." dans "35.40", je voudrais qu'il soit encore placé avant le point s'il le change en "345.40". J'attrape actuellement le message CHANGE, mais cela peut être changé en autre chose (UPDATE?). Comment puis-je accomplir cela?Comment réserver la position du curseur dans le contrôle CEdit?

Répondre

1

Utilisez la fonction GetSel() avant de modifier pour stocker l'emplacement du curseur, puis utilisez SelSel() pour le rétablir. Vous pouvez utiliser ces fonctions pour obtenir/définir l'emplacement du curseur, et pas seulement pour obtenir/définir la sélection effectuée par l'utilisateur.

0

Pourriez-vous expliquer la raison pour laquelle vous souhaitez changer le comportement de la boîte CEdit? En tant qu'utilisateur, j'aurais un problème avec le caret étant changé chaque fois que j'entre un personnage. Ou est-ce ce que vous voulez éviter si vous modifiez cette valeur par programme?

+0

En tant qu'utilisateur, je m'attendrais à ce que le signe d'insertion reste au même endroit. Si vous modifiez la valeur de CEdit avec .SetWindowTextA() par exemple, le curseur est déplacé vers l'avant de la boîte. C'est un moyen d'empêcher cela. – jamuraa

Questions connexes