PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schriftfarbe


Frozenice
25.08.2002, 13:35
ok, folgendes problem:

(vc++6,mfc)

hab mitm anwendungsassi ne dialogfeldbasierende anwendung erstellt. hab mit SetDialogBkColor farbe auf Schwarz gesetzt.
des main dialogfeld is ok (da hab ich keine schrift). aber im about-dialog gibts Probleme:
die schrift ! (is schwarz -> sieht man nicht)
deshalb meien frage:

wie kann die farbe der schrift (oder generell die schrift) im dialogfeld ändern ???

thx für eure antworten, schon mal im voraus :)


Format C:
25.08.2002, 16:54
Wie wird die Schrift gesetzt mit DrawText oder TextOut oder ist es ein Statisches TextFeld ?

Ich würde mal sagen es ist ein Statisches Text Feld

Ich würde es so machen:
Mit SetTextColor die Text Farbe setzten und dann mit DrawText oder TextOut den Text reinschreiben

Frozenice
25.08.2002, 18:27
ja hmm... ok,

mein eigentliches problem:

Wie bekomme ich einen DC vom Dialogfeld, damit ich dann SetTextColor, oder solche Sachen anwenden kann ??

Felix Kaiser
25.08.2002, 18:50
GetWindowDC? Musst aber wenn du fertig bist das DC Handle wieder freigeben. ReleaseDC wars glaube, o.ä.

Frozenice
25.08.2002, 19:20
*damn*
gar net so einfach, dass erklären :(

ok, jetzt aber:

An welcher Stelle im Code muss ich denn GetDC (oder was auch immer) einsetzen und wie (Codebeispiel !?).

Habs mit CAboutDlg::GetDC und so weiter probiert. Ging nich :confused:

*aufantworthoff*

Format C:
25.08.2002, 19:27
hdc = GetDC(hwnd); ?

bla bla

ReleaseDC(hwnd, hdc);



obs bei MFC geht weis ich leider nicht, ich arbeite nicht mit MFC

Auf jeden Fall sollte der Text beim eintreffen der Nachricht WM_PAINT neu gezeichnet werden

einfaches API Beispiel:


case WM_PAINT:
hdc = BeginDC(hwnd, &ps)

// Text zeichnen
EndPaint(hwnd, &ps);
break;

Frozenice
26.08.2002, 18:16
OK, ich hab jetzt die Lösung:

erstmal mit dem klassen-assi ne benachrichtigungsfunktion für die message WM_PAINT für CAboutDlg (oder welchen Dialog auch immer ihr haben wollt :) ). dann in die Funktion

void CAboutDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here

// Zeichnen,......

// Do not call CDialog::OnPaint() for painting messages
}

FERTIG. Kein BeginPaint, kein EndPaint.

:) :) :)

Diogenes
28.08.2002, 19:12
Original geschrieben von Frozenice
Kein BeginPaint, kein EndPaint.



Kein Wunder: Dialoge und Control Items sind Selbstzeichner. Die brauchen keine Antwort auf wm_Paint.
Nichtsdestotrotz kann man wie gesehen, sich einen DC holen und munter reinzeichnen.

Frozenice
29.08.2002, 14:59
ach... :)