Benutzer mit den meisten Antworten
CEdit::Clear() does not fonctione

Frage
-
Why does not fonctione CEdit::Clear() fonction in this way?
Tom
void CMyView::OninitialUpdate() { CEdit& theEdit = GetEditCtrl(); theEdit.SetReadOnly(); .. } void CMyView::OnTimer(UINT nIDEvent) { CEdit& theEdit = GetEditCtrl(); int nStartChar = 0; int nEndChar = theEdit.GetLineCount() - m_nHistoryDepth; theEdit.SetSel(0, nEndChar, TRUE); theEdit.Clear(); }
Antworten
-
Also Clear geht nicht, bzgl. ReplacseSel/EM_REPLACESEL muss ich mich korrigieren, das geht natürlich.
Ich weiß nur mit Sicherheit, das WM_PASTE, WM_CUT und WM_CLEAR bei einem Edit-Control mit ES_READONLY nicht funktionieren.
EM_REPLACESEL hatte ich versehentlich in den gleichen Topf geworfen. Sorry für die Irritation.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert vcdummie Montag, 19. September 2011 15:02
-
Ja, fehlte noch ein UpdateWindow().
theEdit.ReplaceSel(0,n,FALSE);
theEdit.UpdateWindow();Danke fürs Benutzen Deines (biologischen) MFC-Enzyklopädie Wissen.
Sollte man noch irgendwie in MSDN integrieren!- Als Antwort markiert vcdummie Montag, 19. September 2011 15:03
Alle Antworten
-
Aber GetLinCount liefert doch gar nicht die Länge des Textes.
Ich würde es so machen:
void CMyView::OnTimer(UINT nIDEvent) { CEdit& theEdit = GetEditCtrl(); int nEndChar = theEdit.GetWindowTextLength() - m_nHistoryDepth; if (nEndChar>0) { theEdit.SetSel(0, nEndChar, FALSE); theEdit.ReplaceSel("",FALSE); } }
Die erste Zeile wird dann halt evtl. verstümmelt...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
- Bearbeitet Martin RichterModerator Freitag, 16. September 2011 09:44
- Als Antwort vorgeschlagen Martin RichterModerator Freitag, 16. September 2011 13:06
-
Hm.. GetLineCount(), GetWindowText()
Mein Test ergibt folgendes:
- Für theEdit.Clear() ich muss den Text mit GetLineCount() selektionen
- Für theEdit.ReplaceSel(), es ist wie Du sagst mit GetWindowTextLength()bizarr?!
Das Problem ist in meinem Fall aber theEdit.SetReadOnly(TRUE/FALSE):
- in ReadOnly Mode: Der selektionierte Text wird nicht gelöscht.
Ich will in meinem Fenster keine Eingabe erlauben, nur als Ausgabe verwenden. Ich verstehe nicht wieso ich in ReadOnly Mode kein selektinerten Text löschen kann.
-
-
Woher weisst Du im voraus das ReplaceSel, Clear nicht funktionieren?
Nun kommentiere einfach mal Dein SetReadOnly aus und sehe was passiert.
Wenn Du Deinen kompletten Text löschen möchtest, und danach sieht es für mich aus, dann könntest Du auch
theEdit.SetSel(0, -1, FALSE);
verwenden.
-
Also Clear geht nicht, bzgl. ReplacseSel/EM_REPLACESEL muss ich mich korrigieren, das geht natürlich.
Ich weiß nur mit Sicherheit, das WM_PASTE, WM_CUT und WM_CLEAR bei einem Edit-Control mit ES_READONLY nicht funktionieren.
EM_REPLACESEL hatte ich versehentlich in den gleichen Topf geworfen. Sorry für die Irritation.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert vcdummie Montag, 19. September 2011 15:02
-
Ja, fehlte noch ein UpdateWindow().
theEdit.ReplaceSel(0,n,FALSE);
theEdit.UpdateWindow();Danke fürs Benutzen Deines (biologischen) MFC-Enzyklopädie Wissen.
Sollte man noch irgendwie in MSDN integrieren!- Als Antwort markiert vcdummie Montag, 19. September 2011 15:03