Ausgabetext formatieren

campinge

Grünschnabel
Hallo!

Ich arbeite derzeit an einem kleinen win32 Projekt.
Jedenfalls möchte ich Text Ausgeben lassen. Das alleine ist kein problem:

PHP:
hBeispieltext   = CreateWindow("STATIC",
							 "Text",
							 WS_VISIBLE | WS_CHILD | SS_CENTER,
							 130, 40,
							 200, 30,
							 hParent,
							 (HMENU)ID_STATICTEXT,
							 hInst,
							 NULL);

Mir ist der ausgegebene Text allerdings viel zu klein.
Deshalb würde ich gerne die Schriftgröße andern, dem Text eine andere Font und Farbe geben und den Hintergrund schwarz machen.
Ich hab mich mal ein bischen ungeguckt und habe auch in der MSDN gestöbert. Diese bringt einem ja allerdings nur dann etwas, wenn man zumindest den Funktionsnamen kennt ^^

Weis eine/r von euch, wie ich das ganze anstelle?
 
Hi,

also erstmal zu der Schriftart und Größe.

So erzeugst du dir die Schriftart deiner Wahl und setzt diese für dein Control.

Schau dir dazu die Struktur LOGFONT in der MSDN genau an ;-)

Code:
    LOGFONT lf;
    memset(&lf, 0, sizeof(LOGFONT));
    strcpy(lf.lfFaceName, "Verdana");
    lf.lfHeight = 30;
    lf.lfWeight = FW_BOLD;
    lf.lfQuality = CLEARTYPE_QUALITY;
    HFONT hFont = CreateFontIndirect(&lf);
    // Mit dem nachfolgenden Aufruf setzt du den Font auf dein Control
    SendMessage(hBeispieltext, WM_SETFONT, (WPARAM)hFont, TRUE);

Und nun zu den Farben:

dafür erzeugst du dir erstmal einen Brush mit deiner gewünschten Hintergrundfarbe.

Code:
    HBRUSH hBrush = CreateSolidBrush(RGB(0,255,0));

Und in deiner WndProc fängst du das Event WM_CTLCOLORSTATIC ab und implementierst folgendes:

Code:
    case WM_CTLCOLORSTATIC:
        {
        HWND hWnd = (HWND)lParam;
        if( hWnd == hBeispieltext) {  // Handelt es sich auch um genau dieses Static-Control?
            HDC hDC   = (HDC)wParam;
            SetTextColor(hDC, RGB(255,0,0)); // Deine Textfarbe
            SetBkMode(hDC, TRANSPARENT); // Hintergrund des Textes Transparent machen
            return (LRESULT)hBkgBrush; // Das Brush mit deiner Hintergrundfarbe wird zurückgegeben
        }
        else {
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        }
        break;

Dieses Beispiel erzeugt dir eine fette Rotschrift auf giftgrünem Hintergrund.. Sieht toll aus ;-)

Weiterhin viel Spaß..

Pit
 
Zuletzt bearbeitet:
Hallo und Danke!

Ich habs heut in ner Freistunde allerdings auch selber schon hinbekommen.
Die Farben setze ich wie folgt:
PHP:
switch (Msg)
{
	case WM_CTLCOLORSTATIC:
	{
		HDC hdcStatic = (HDC)wParam;
		SetTextColor(hdcStatic, RGB(0,255,0));
		SetBkColor(hdcStatic, RGB(0,0,0));
	} break;
}

und für die Schriftart hab ich mir halt eine über CreateFont(); erstellt und rufe für jede Staticbox dann einfach das hier auf:
PHP:
hHeader = CreateWindow(...)
SendMessage(hHeader, WM_SETFONT, (WPARAM)MeineFont,0);

so kann ich sogar für jedes Window eine eigene Font benutzen (sofern erstellt ;) )
 
Zurück