2010-11-30 6 views
2

J'ai des réflexes indésirables avec ES_AUTOHSCROLL Set."Illimité" Texte CEdit sans ES_AutoHScroll

Ce que j'essaye de faire est de créer une édition qui redimensionne avec le texte dedans. Cependant, je rencontre un problème chaque fois que l'utilisateur saisit la fin de la modification.

Sans ES_AUTOHSCROLL, l'utilisateur ne peut pas taper au-delà de la taille actuelle de l'édition, de sorte que mon édition n'augmente pas pour s'adapter au nouveau caractère, car l'entrée est ignorée. Avec ES_AUTOHSCROLL lorsque l'utilisateur saisit la taille actuelle de l'édition, il défile avant que j'aie la chance d'augmenter la taille de ma fenêtre, donc je finis avec la première lettre cachée même si la fenêtre est maintenant assez grande pour tiens le nouveau personnage.

Ma solution consistait à faire en sorte que mon édition d'un caractère de largeur maximale soit plus longue que le texte qu'il contient et que cela fonctionne, parce que vous avez de la place pour taper le caractère suivant. Cependant, cela semble un peu ringard.

S'il existait un moyen d'autoriser un texte plus large que la largeur de la fenêtre d'édition sans utiliser ES_AUTOHSCROLL, je serais défini.

Répondre

0

J'ai trouvé un moyen de simuler l'effet que je veux.

J'utilise ES_AUTOHSCROLL.

Je réponds à OnUpdate et modifie la taille du contrôle pour l'adapter au texte qu'il contient. Pour gérer le problème de défilement (il défile pour insérer du texte avant qu'il ne sache qu'il s'agrandira), toujours dans OnUpdate, je sélectionne 0,0, puis renvoie la sélection précédente. De cette façon, il revient au début, puis met à jour la taille. De cette façon, le contrôle semble croître indéfiniment sans défilement.

0

Je pense que vous voulez aussi utiliser ES_MULTILINE

EDIT: Dans la documentation de CEdit il y a une fonction membre void CEdit::LimitText(int nChars = 0) qui définit la longueur du texte à UINT_MAX. Je pense toujours que vous devez également utiliser ES_AUTOHSCROLL (sinon vous obtiendrez des notifications EN_MAXTEXT lorsque vous essayez de taper au-delà de la largeur du contrôle).

+0

Je ne veux pas de lignes multiples. Je veux une ligne qui s'étend "pour toujours" sans utiliser autohscroll. Je veux être capable de taper au-delà de la largeur de la boîte d'édition sans utiliser autohscroll. –

Questions connexes