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.


  • Mod



  • 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 😉


Anmelden zum Antworten