CColorDialog und Button einfärben
-
estartu schrieb:
Wo/Wann legst du die Farbe denn fest?
Na in dem folgenden Code (das fett markierte)
void CSettingsDlg::OnBnClickedButton1() { // TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein. startfarbe1 = RGB( 255, 0, 0 ); // Hier wird die Farbe beim Start definiert CColorDialog dlg(startfarbe1); // Hier wird sie dann beim Aufruf gesetzt if (IDOK == dlg.DoModal()) { color1 = dlg.GetColor(); //TRACE("Rot = %u, Grün = %u, Blau = %u\n", GetRValue(color1), GetGValue(color1), GetBValue(color1)); } }Wenn ich den Farbdialog aufrufe ist die farbe "Rot" auch markiert nur der Button ist Schwarz gefärbt.
-
Hmm, ich glaub ich hab die Kurve noch nicht ganz...
Du hast einen CSettingsDlg mit Knopf drauf der in einer gewählten bzw. beim Start festgelegten Farbe gemalt werden soll. Es klappt mittlerweile (nach Einbau des Invalidate), dass nach dem Wählen der Farbe auch der Knopf richtig gefärbt ist.
Aber die Startfarbe kommt nicht so recht an.Ich vermute, dass da was mit dem Initialisieren der Farbe nicht ganz passt.
OnBnClickedButton1 ist nämlich nicht die Funktion wo so eine Initialisierung hingehört (die wird ja viel zu spät aufgerufen).
Pack die Zeilestartfarbe1 = RGB( 255, 0, 0 ); // Hier wird die Farbe beim Start definiertmal in die OnInitDialog. Dann sollte es klappen.
-
estartu schrieb:
Hmm, ich glaub ich hab die Kurve noch nicht ganz...
Du hast einen CSettingsDlg mit Knopf drauf der in einer gewählten bzw. beim Start festgelegten Farbe gemalt werden soll. Es klappt mittlerweile (nach Einbau des Invalidate), dass nach dem Wählen der Farbe auch der Knopf richtig gefärbt ist.
Aber die Startfarbe kommt nicht so recht an.Soweit hast du alles richtig verstanden
estartu schrieb:
Ich vermute, dass da was mit dem Initialisieren der Farbe nicht ganz passt.
OnBnClickedButton1 ist nämlich nicht die Funktion wo so eine Initialisierung hingehört (die wird ja viel zu spät aufgerufen).
Pack die Zeilestartfarbe1 = RGB( 255, 0, 0 ); // Hier wird die Farbe beim Start definiertmal in die OnInitDialog. Dann sollte es klappen.Funktioniert leider nicht wenn ich es in OnInitDialog reinsetze.
Es gibt zwei Codestellen die für die Farbe zuständig sind aber ich habe schon beide ausprobiert, funktioniert leider nicht.
dc.FillSolidRect(&rect,color2);oder
dc.SetBkColor(color1);Wenn ich allerdings beim ersten die Variable ändere, dann ist der Button beim Start in der Farbe. Nur dann habe ich das Problem das er sich nicht mehr ändern lässt.
-
Shona schrieb:
Es gibt zwei Codestellen die für die Farbe zuständig sind aber ich habe schon beide ausprobiert, funktioniert leider nicht.
dc.FillSolidRect(&rect,color2);oder
dc.SetBkColor(color1);Wenn ich allerdings beim ersten die Variable ändere, dann ist der Button beim Start in der Farbe. Nur dann habe ich das Problem das er sich nicht mehr ändern lässt.
Wie änderst du die Variable? Was passiert, wenn du color2 zu Anfang auf rot setzt?
-
Na ganz einfach
dc.FillSolidRect(&rect,color1);ändere ich in
dc.FillSolidRect(&rect,startcolor1);Wenn ich das so ändere dann ist der Button Rot wenn der Dialog auf geht, aber er lässt sich nicht mehr ändern
(Entschuldige hab vorhin statts "color1", "color2" geschrieben)
-
Dann lass startfarbe doch mal ganz weg und ändere die Zeilen
startfarbe1 = RGB( 255, 0, 0 ); // Hier wird die Farbe beim Start definiert CColorDialog dlg(startfarbe1); // Hier wird sie dann beim Aufruf gesetztin
color1 = RGB( 255, 0, 0 ); // Hier wird die Farbe beim Start definiert CColorDialog dlg(color1); // Hier wird sie dann beim Aufruf gesetztOder wird die noch irgendwo genutzt?
-
Ja klar wird die noch wo genutzt
Die beiden Codestellen von vorhin brauchen die variable
color1damit sich der Button in der Farbe ändern lässt, ansonsten ist der Button ja immer Rot.Außerdem brauche ich diese in folgender Zeile, weil ja diese Methode ein COLORREF Struktur zurückliefert und mir somit die ausgewählte Farbe.
color1 = dlg.GetColor();Da ich das aber so machen muss, das beim Dialogaufruf der Button schon eine Farbe hat, brauche ich eine zweite Variable (startfarbe1) um diese fest zu legen.
-
Shona schrieb:
Ja klar wird die noch wo genutzt
Die beiden Codestellen von vorhin brauchen die variable
color1damit sich der Button in der Farbe ändern lässt, ansonsten ist der Button ja immer Rot.Da ich das aber so machen muss, das beim Dialogaufruf der Button schon eine Farbe hat, brauche ich eine zweite Variable (startfarbe1) um diese fest zu legen.
Du hast mich falsch verstanden. Ich fragte nach startfarbe und nicht nach color1.
Was spricht dagegen, startfarbe gegen color1 auszutauschen, hast du es mal versucht?
-
estartu schrieb:
Du hast mich falsch verstanden. Ich fragte nach startfarbe und nicht nach color1.
Was spricht dagegen, startfarbe gegen color1 auszutauschen, hast du es mal versucht?
Hab dich wirklich falsch verstaden *schäm*
Hab es mal gemacht und siehe da es funktioniert, DANKE
-
Na da bin ich beruhigt.
