Schrift vergrößern
-
aha
muss ich dann so anwenden, oder?
GetDlgItem(IDC_Kraft)->SetFont......
-
Ja, oder du machst eine Controlvariable.
-
ok
ich versuch mal eben
-
schriftgröße funzt wunderbar
nur die farbe krieg ich nicht hin
irgendwie komm ich bei OnCtlColor mit dem CDC nicht weiter
hab schon bissl rumgeschaut hier, aber nichts gefunden
die meisten benutzen irgendeine pDC Member, aber steht nirgendwo, was das genau ist
-
hab das auch schon mal mit SetTextColor() probiert
krieg ich auch nicht hin
-
Zeig mal deinen Versuch.
-
SetTextColor(m_Kraft,RGB(0,255,255));
m_Kraft ist ein Control vom Textfeld
-
Äh, ich weiß nicht, ob das so gehen könnte.
Ich wollte eigentlich das komplette OnCtlColor haben, dann kann ich besser gucken, was da falsch gelaufen ist.
-
also die Funktion übernimmt doch nur einen RGB Wert! Oder? Dachte ich zumindest!
Du musst ne Abfrage machen ob jetzt grad gewünschtes Control kommtif (pWnd->GetDlgCtrlID() == IDC_Kraft)
so und in der if kannste jetzt allgemein sagen der Text hat die Farbe ...
pDC->SetTextColor(RGB(0,255,255));
pDC ist wie du schon richtig gesagt hast ein Member CDC das von der OnCtlColor kommt!
-
mit OnCtlColor hab ich es nicht versucht, weil ich mit CDC nicht weiterwusste
hab einfach nur SetText gemacht
-
also ich hab jetzt folgendes:
ein Textfeld Namens "IDC_Kraft"
darauf ist eine Membercontroll namens m_Kraft
ansonsten hab ich nur schriftgroesse gemacht
schrift.CreateFont(20, 0, 0, 0, 200, 0, 0, 0, 1, 0, 0, 1, 2, "Arial");
an farbe hab ich jetzt noch gar nichts gemacht
-
du musst ihm ja irgendwo sagen was er denn einfärben soll, und das macht man gewöhnlich in der OnCtlColor. Erzeug sie über den Klassenassi und dann mach was ich oben geschrieben hab und du wirst merken dass das gar nciht so schwer ist, wenn man erst mal drin ist.
-
... da war Polofreak schneller.
Also, versuch erstmal das in OnCtlColor und wenns nicht geht, zeig mal, was du (zum Thema Farbe, der Font funktionierte ja) gemacht hast.
-
jo, klappt
und wenn ich jetzt verschiedene in anderen farben während der laufzeit ändern möchte, mach ich die ganze sache einfach dynamisch oder wie?
sprich; ich übergebe im das Steuerelement und die 3 farben, gell?
-
Pro Steuerelement eine.
Aber im Prinzip hast du Recht.
-
hab das jetzt so versucht:
void CAFKWin32XPDlg::OnButton4() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen OnCtlColor(NULL,NULL,NULL,150,243,250); }
HBRUSH CAFKWin32XPDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor, int R,int G, int B) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd->GetDlgCtrlID() == IDC_Kraft) pDC->SetTextColor(RGB(R,G,B)); // TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll return hbr; }
hängt sich aber auf
-
wo hängt er sich denn auf?
Dann ist es einfacher! Was für eine Meldung bekommst du ??
-
Die Standardt Meldung von Windows mit den Buttons "Senden" und "Nicht Senden"
-
ich will ja nur, dass sich die farbe auf rot,blau oder grün ändert, wenn ich die entsprechenden buttons klicke
-
Ändere NIEMALS die Anzahl der Parameter von Message-Handlern!
Nicht:HBRUSH CAFKWin32XPDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor, int R,int G, int B)
sondern
HBRUSH CAFKWin32XPDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
Mach den COLORREF (RGB-Wert) als Membervariable und belege den in der jeweiligen OnBtnFarbe mit dem passenden Wert, der Rest müßte von alleine gehen.