Text formatieren

Hallasas

Erfahrenes Mitglied
Hallo!
Ich komme gleich zur Sache:
Ich zeige mit TextOut() einen Schriftzug in meiner GUI an und würde gerne wissen, wie ich diesen Formatieren bzw. Farbe -, Größe- und Hintergrundfarbe ändern kann?

Ich freue mich über eure Hilfe.
Gruß Hallasas
 
Dazu mußt Di die CDC-Funktion SelectObject(...) jeweils mit dem entsprechenden Pen und Font aufrufen. Die Hintergrundfarbe setzt du mit CDC::SetBkColor.
 
Hi,

du übergibst ja der Methode textOut einen HDC. Mit diesem manipulierst du die Textausgaben.

Die Textfarbe setzt du mit

COLORREF SetTextColor(
HDC hdc,
COLORREF crColor
);

Die Hintergrundfarbe mit

COLORREF SetBkColor(
HDC hdc,
COLORREF crColor
);

Falls der Hintergrund transparent sein soll verwendest du


int SetBkMode(
HDC hdc,
int iBkMode
);

mit iBkMode = TRANSPARENT.

Den Zeichensatz wählst du so aus:

HGDIOBJ SelectObject(
HDC hdc,
HGDIOBJ hgdiobj
);

Sieht dann so aus :

Code:
    HFONT myFont = CreateFontIndirect(&logfont); 
    HFONT oldFont = (HFONT)SelectObject(hDC, myFont); // Zeichensatz selektieren
    SetTextColor(hDC, RGB(255,0,0)); // Rote Textfarbe
    SetBkColor(hDC, RGB(0,0,255));   // Blauer Hintergrund
    TextOut(hDC, 0,0,"MeinText");
    SelectObject(hDC, oldFont );    // Alten Font wieder zurückselektieren

Viel Erfolg,

Peter
 
Upps, das ist natürlich möglich, daß die Textfarbe mit SetTextColor gesetzt wird und nicht mit dem Pen. Sorry! Ist schon ne Weile her, daß ich DC-Geschichten gemacht habe.
 
Erstmal danke für die schnellen Antworten !
Doch leider habe ich noch ein Problem:
Code:
HFONT myFont = CreateFontIndirect(&logfont);

Ich war mal auf der MSDN und habe das gefunden:
Code:
HFONT CreateFontIndirect(
  CONST LOGFONT* lplf   // characteristics
);

Daraufhin habe ich dies versucht:
Code:
LOGFONTA logfont;

Doch nun wird der Text nicht mehr angezeigt...
Ich hoffe, ihr könnt mir helfen...

Gruß Hallasas
 
Hab das Problem gefunden!
Ich habe den TextOut() -Befehl vor dem SelectObject() -Befehl initiert...
Einmal die Zeilen getauscht und alles klappt wunderbar!

Vielen Dank.
 
Also Mittlerweile gibt es keine Probleme mehr, den "eigenstehenden" Text zu formatieren:
C++:
//...
		case WM_PAINT:
		{
			PAINTSTRUCT ps;
			HDC         hDC;
			
			HFONT FontSelektion =
				CreateFont(
					0, 9,
					GM_COMPATIBLE,
					0,
					FW_NORMAL,
					false, false,
					false,
					DEFAULT_CHARSET,
					OUT_DEFAULT_PRECIS,
					CLIP_DEFAULT_PRECIS,
					DEFAULT_QUALITY,
					DEFAULT_PITCH,
					"Arial" );

  
			const char  szText[] = "Test!";

			hDC = BeginPaint(hwnd, &ps);
			SelectObject(hDC, FontSelektion );
			{
				TextOut(hDC, 5, 5, szText, sizeof(szText) - 1);
			}
			EndPaint(hwnd, &ps);

			return 0;
		}
//...

Doch wie kann ich den Text auf meinen Buttons verändern ?
Gruß
 
Zuletzt bearbeitet von einem Moderator:
Zurück