Edit Farbe
-
Hallo!
Ich habe bereits im Internet gesucht, aber leider nicht viel gefunden, was ich verstanden habe!Wie kann ich während dem Ablauf des Programms immer wieder die Hintergrundfarbe eines Edit Feldes in MFC mit einem einfachen Funktionsaufruf ändern?
Danke
-
Du mußt die OnCtlColor()-Methode deiner Dialogklasse überladen und dort mit SetBkColor() die Farbe einstellen und einen Brush in der jeweils benötigten Farbe zurückgeben.
-
Siehe auch TN062: http://msdn2.microsoft.com/en-us/library/eeah46xd(VS.80).aspx
-
Die OnCtlColor() Funktion funktioniert bei mir nicht.
Kann man irgendwie ein Rechteck zeichnen (ohne OnDraw,OnPaint)?
Ich muss einfach ein Feld auf das Form zeichnen, wo ich eine Farbe darstellen kann.
-
So!
Ich habe jetzt trozdem eine Lösung gefunden:
Auf dem Dialog-Fenster erstelle ich einfack irgend ein Element (bei mir war es Picture Control) und stelle die Position und größe ein, wo später dann das Rechteck gezeichnet werden soll. Die Eigenschaft Visible auf False setzten.
Anschließend beim OnPaint Handler des Dialogs folgenden Code (Achtung auf die ID des Elements, bei mir IDC_COLOR).// DC zum Zeichnen innerhalb des Dialogs holen CPaintDC dc(this); // Rechtecke des Buttons und des Dialogs CRect CColorRect; // CWnd-Objekt fuer ColorObjekt holen CWnd *pWnd = GetDlgItem(IDC_COLOR); // position/-groesse in Bildschirm-Koordinaten holen pWnd->GetWindowRect(CColorRect); // und nach Client-Koordinaten des Dialogs wandeln ScreenToClient(CColorRect); //Farbe bestimmen CBrush* brushRGB; brushRGB = new CBrush(RGB(10,20,30)); // und Rechteck dann mit ausfuellen dc.FillRect(CColorRect,brushRGB);
-
PinkoPalino schrieb:
Die OnCtlColor() Funktion funktioniert bei mir nicht.
Was meinst du mit "funktioniert nicht"? OnCtlColor() soll nur die Darstellungsfarben festlegen - um das eigentliche Malen kümmert sich dann OnPaint().
Kann man irgendwie ein Rechteck zeichnen (ohne OnDraw,OnPaint)?
Außerhalb von OnPaint() solltest du überhaupt nichts auf den Bildschirm malen - das würde bei nächster Gelegenheit wieder überpinselt werden.
PS: Wenn du nur ein farbiges Rechteck zeichnen willst, ist ein Static-Control wohl geeigneter als ein Editfeld
