Edit Feld - Hintergrundfarbe wird plötzlich weiß



  • Hallo liebe Experten!

    Ich habe eine Dialoganwendung, bei der ich bei einem EditFeld die Hintergrundfarbe geändert habe. Funktionert soweit ganz gut, aber nur eine gewisse Zeit lang. Irgendwann wird dann die Farbe weiß und ich habe keine Ahnung warum! Wer findet den Fehler? 😕

    Hier der Code:

    HBRUSH CmyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    	// TODO:  Ändern Sie hier alle Attribute für den DC.
    
    	// Brush für den Dialog Hintergrund anlegen
        HBRUSH hBGBrush = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
        // Brush für den Hintergrund des Eingabefeld festlegen
        HBRUSH hBGEdit = CreateSolidBrush(RGB(0, 200, 0));
    
        switch(pWnd->GetDlgCtrlID()){
    		case IDC_EDIT_TEMP:
    			pDC->SetBkMode(TRANSPARENT);
    			return hBGEdit;
        }
    
        // Brush für Dialog Hintergrund zurückgeben
        return hBGBrush;
    }
    

  • Mod

    Du erzeugst jedes mal einen neuen Brush! Irgendwann können keine GDI Objekte mehr angelegt werden....

    Erzeuge einen Brush im Konstruktor Deines Dialoges und gib das hier zurück.

    BTW: Warum arbeitest Du nicht mit CBrush.

    Beispiel gibt es übrigends in den TN der MFC wie man sowas sehr schön über Refelction regelt.
    http://msdn.microsoft.com/en-us/library/eeah46xd(VS.71).aspx



  • Alles klar!

    Es funktioniert. Vielen Dank! 😃


Anmelden zum Antworten