2010-11-30 16 views
2

Ich habe unerwünschte Reflexe mit ES_AUTOHSCROLL Set."Unbegrenzte" CEdit-Text ohne ES_AutoHScroll

Was ich versuche, ist ein Edit zu erstellen, das mit dem darin enthaltenen Text skaliert. Ich habe jedoch ein Problem, wenn der Benutzer nach dem Ende der Bearbeitung eingibt.

Ohne ES_AUTOHSCROLL kann der Benutzer nicht über die aktuelle Größe der Bearbeitung eingeben, so dass meine Bearbeitung nicht auf das neue Zeichen passt, da die Eingabe ignoriert wird.

Mit ES_AUTOHSCROLL, wenn der Benutzer über die aktuelle Größe der Bearbeitung eingibt, scrollt es zuerst, bevor ich eine Chance habe, meine Fenstergröße zu erhöhen, so dass ich den ersten Buchstaben ausgeblendet habe, obwohl das Fenster jetzt groß genug ist halte das neue Zeichen.

Meine Lösung bestand darin, meine Bearbeitung um ein Zeichen mit maximaler Breite länger zu machen als der Text, der sie enthält, und das funktioniert, weil Sie Platz haben, um das nächste Zeichen einzugeben. Das sieht allerdings etwas schäbig aus.

Wenn es eine Möglichkeit gibt, einen breiteren Text als die Breite des Bearbeitungsfensters zuzulassen, ohne ES_AUTOHSCROLL zu verwenden, würde ich eingestellt werden.

Antwort

0

Ich habe einen Weg gefunden, den gewünschten Effekt zu simulieren.

Ich benutze ES_AUTOHSCROLL.

Ich reagiere auf OnUpdate und ändern Sie die Größe des Steuerelements an den darin enthaltenen Text anzupassen. Um das Scroll-Problem zu lösen (es scrollt, um Text einzufügen, bevor es weiß, dass es größer wird), wähle ich immer noch OnUpdate, wähle 0,0 und dann die vorherige Auswahl. Auf diese Weise scrollt es zurück zum Anfang und aktualisiert dann die Größe.

Auf diese Weise scheint das Steuerelement ohne Scrollen unbegrenzt zu wachsen.

0

Ich glaube, Sie auch ES_MULTILINE

EDIT verwenden möchten: In der Dokumentation von CEdit gibt es eine Memberfunktion void CEdit::LimitText(int nChars = 0) die setzt die Textlänge auf UINT_MAX. Ich denke immer noch, dass Sie auch ES_AUTOHSCROLL verwenden müssen (andernfalls erhalten Sie EN_MAXTEXT-Benachrichtigungen, wenn Sie versuchen, über die Breite des Steuerelements hinaus zu tippen).

+0

Ich möchte nicht mehrere Zeilen. Ich möchte eine Zeile, die "für immer" ohne Authscroll erweitert. Ich möchte in der Lage sein, die Breite des Bearbeitungsfelds ohne Authscroll einzugeben. –

Verwandte Themen