textout() in CRichEditView
-
Hi,
Wie der Titel schon sagt, möchte ich einen Text in einer CRichEditView ausgeben.
folgender Code:
void CEditorView::OnPaint() { CRichEditView::OnPaint(); CRect rect; GetClientRect( &rect ); CPaintDC dcPaint(this); // device context for painting CDC dc; dc.CreateCompatibleDC( &dcPaint ); int saved = dc.SaveDC(); dc.TextOut( 2, 1, _T("hallo") ); dcPaint.BitBlt( 0, 0, rect. right, rect.bottom, &dc, 0, 0, SRCCOPY ); dc.RestoreDC( saved ); }Funktioniert leider nicht

Was mach ich da falsch??
-
Ich weiß nun, dass ich "CRichEditView::OnPaint();" nicht aufrufen darf. Nur dann wird der Bildaufbau vom Fenster nicht mehr ordnungsgemäß durchgeführt.
Was kann ich dagegen tun?
-
Dur rufst OnPaint() per 'Hand' auf? Das ist so nicht vorgesehen
der Aufruf von OnPaint() erfolgt über Invalidate() und co.
-
Ne, das meinte ich nicht.

Ich meinte, ich muss die Codezeile "CRichEditView::OnPaint();" aus meinem Programm entfernen, nur dann spinnt das Programm. Und wenn ich sie drinnen lasse, wird der Text nicht angezeigt.

-
Sorry.
Sind für RichEdit nicht auch StreamIn und StreamOut für das setzten des Textes zuständig? Du solltest jedenfalls nicht mit TextOut in ein Editfeld schreiben, das ist nur in ganz seltenen Fällen nötig.
-
Ja es geht mir eigentlich auch gar nicht ums lesen oder schreiben, das war nur ein Beispiel.

In Wirklichkeit möchte ich drauf zeichnen.
Auf einer CEdit-View gehts komischerweise, ich hab aber keine Ahnung, warum das bei
einer RichEdit-View nicht geht...
-
Okay, also ich mach das jetzt anders. Ich möchte nämlich den Hintergrund anfärbeln,
deshalb dachte ich, ich mach das in der OnPaint().
Jetzt hab ich die Methode OnCtlColor überschrieben. Das funktioniert in einer
CEdit-View sehr gut, nur natürlich in einer CRichEdit-View wieder mal nicht.
Die Methode OnCtlColor() wird in einer CRichEdit-View nämlich nicht aufgerufen.
Wäre echt super, wenn mir jemand sagen könnte, was ich machen muss.