Textausgabe in einer SDI Anwendung
-
Hallo Leute habe da ein Problem.
Ich möchte in einer SDI Anwendung an bestimmten Positionen ein Text Ausgeben.
Die Position möchte ich natürlich bestimmen können. Habe diverse versuche mit TextOut
gemacht aber hab es nicht so hinbekommen. vielleicht kann mir jemand ein Codebeispiel schicken oder Posten.
Oder gute Tutorials nennen wo dieses Problem auch angesprochen wird.
-
Zeige mal ein wenig Code!
Was genau hat nicht funktioniert? Was für eine View nutzt du in deiner SDI Anwendung?
-
Es wäre hilfreich zu wissen, welche Klasse Dein Fentser ist, in dem Du den Text augeben möchtest. Was hast Du bisher versucht, um das Text reinzumalen?
Gruß André
-
danke das ihr so schnell geantwortet habt.
ich male in der view anwendung ein diagramm, das ich noch beschriften möchte.
also beschriften der x-achse und in der view wird nur noch das diagramm
gezeichnet.
brauche nur ein beispiel der cfont klasse die ich einbinden kann
-
cugulu schrieb:
danke das ihr so schnell geantwortet habt.
ich male in der view anwendung ein diagramm, das ich noch beschriften möchte.
also beschriften der x-achse und in der view wird nur noch das diagramm
gezeichnet.
brauche nur ein beispiel der cfont klasse die ich einbinden kannUnd was für ein Beispiel der CFont Klasse wäre dies das du benötigst?
-
deklaration und benutzen.
wenn ich es deklariere, gibt es keine fehler beim kompilieren
aber ich kann den ´text nicht ausgeben. zur laufzeit gibt es ein fehler.
ich kann leider erst morgen ein teil des codes posten aber erstmal danke.
-
Ich kenne mich mit CView nicht so gut aus, aber da es von CWnd abgeleitet ist, sollte auch das OnPaint() Ereignis zum Malen da sein. Was es mit dem OnDraw() auf sich hat, ist mir im Moment nicht so klar.
Im OnPaint() kann wie folgt Text ausgeben:
CPaintDC dc(this); // device context for painting CString sztemp="Mein Text"; RECT MyRect; MyRect.bottom=100; MyRect.top=10; MyRect.left=10; MyRect.right=100; dc.DrawText(sztemp,&MyRect,DT_CENTER|DT_VCENTER);
Falls Du noch mit einem besonderen Font arbeiten möchtest, dann kannst Du vor dem DrawText diesen auswählen.
dc.SelectObject(&MyFont);
Gruß André
-
Sorry, das Beispiel für den Font hab ich glatt vergessen:
CFont MyFont; LOGFONT lf; ::ZeroMemory (&lf, sizeof (lf)); lf.lfHeight = 16; lf.lfWeight = FW_NORMAL; lf.lfUnderline = FALSE; ::strcpy (lf.lfFaceName, _T("Arial")); MyFont.CreateFontIndirect(&lf);
Ist nicht fein, aber funktioniert. Was du alles bei einem LOGFONT so ändern kannst, findest Du in der MSDN.
Du kannst auch mit GetStockObject() arbeiten. das würde dann so aussehen:
dc.SelectObject(GetStockObject(DEFAULT_GUI_FONT));
Gruß André
-
Hallo Andre Super das Beispiel hat mir auch schon sehr geholfen.
Kannst du mir auch noch sagen wie ich die Farbe des Textes und den Hintergrund(TRANSPARENT)ändern kann.
In der MSDN konnte ich leider nichts finden.
Ich möchte auch allen anderen dafür danken die sich gedanken darüber gemacht haben.
-
Alle Funktionen, die Du brauchst, sind Member von CDC. Da findest Du mit Sicherheit auf etwas in der MSDN.
Zum Setzen der Textfarbe: CDC::SetTextColor
Für den Hintergrund wäre es das einfachste, wenn Du mit CDC::SetBkColor auf die gewünschte Farbe setzt. Du kannst Dir auch diese Funktion ansehen CDC::SetBkModeGruß André