Schrift vergrößern
-
Hallo
ich habe hier ein Textfeld, in dem logischer weise die Standartschrift drin ist. Ich habe schon in den Eigenschaften geschaut, ob ich das verstellen kann. Ist aber leider nicht so. Dann hab ich mir "C++ in 21 Tagen" angeschaut. Da ist sowas ja drin, nur leider nicht wie ich brauche. Bei mir soll der Benutzer ja nicht selber einstellen.
Könnt ihr mir kurz sagen, wie ich die Schriftgröße und die Schriftart verändern kann? Wenn möglich noch mit Farbe!?!
-
Also, die ersten beiden kannst du mit SetFont erschlagen.
Und Farbe machst du mit OnCtlColor. (da hilft auch bestimmt kurz suchen)
-
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