Hintergrundfarbe bestimmter EditControlls ändern



  • Joa, also bei mir tut sich da irgendwie nichts, ich nimm mal an, dass dein COLOR_3DFACE einfach eine RGB Farbe defined, oder?
    Also bei schauts so aus:

    if (pWnd->GetDlgCtrlID() == IDC_EDT_POT_TST_IST)
    	{
    		HBRUSH B = CreateSolidBrush(::GetSysColor(RGB(0,0,100))); 
    	}
    

    Aber öhm ich seh nichts! 😞 😞



  • Guck bitte in die MSDN, was GetSysColor macht. 😃



  • also ich hab mal nachgeschat, und so bekomm ich die Fenster die halt 3D Face sind OK, aber wenn ich dann setBKcolor mach passiert wieder das gleiche Texthintergrund ändert sich rest bleibt weiß!

    estartu_de schrieb:

    HBRUSH CFilialenView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    	HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor); 
    
    	// Die Listbox für die Mitarbeiter soll bitte deaktiviert aussehen.
        if ((pWnd->GetDlgCtrlID() == IDC_LST_MITARBEITER) && (m_nViewMode == VIEW_MODE_VIEW))
        { 
    		pDC->SetTextColor(::GetSysColor(COLOR_WINDOWTEXT)); // Leider kein Effekt -> TODO: Listboxklasse machen
    		pDC->SetBkMode(TRANSPARENT);
            HBRUSH B = CreateSolidBrush(::GetSysColor(COLOR_3DFACE)); //Hintergrundfarbe 
            return (HBRUSH) B; 
        } 
        return hbr; 
    }
    

    ´
    das TODO lässt mich darauf schließen dass die LB nicht deaktiviert ausschaut, warum nicht CDC::GrayString?



  • pDC->SetBkMode(TRANSPARENT); // Hintergrund transparent machen (also KEIN SetBkColor nötig)
            HBRUSH B = CreateSolidBrush(RGB(0,0,100)); //Hintergrundfarbe
            return (HBRUSH) B; // Die Farbe soll genommen werden
    

    Das TODO steht da, weil ich schwarzen Text haben will, der ist aber immer grau. 😡
    Und weil sich das (genauso wie bei Comboboxen und Edits) nicht mal eben verbiegen lässt, was die Textfarbe im deaktivierten Zustand angeht, muss man eine eigene Klasse machen und da selber zeichnen oder andere Kopfstände veranstalten.
    Dazu hatte ich noch keine Lust und soooooo dringend ist es nicht. Lesen kann man es ja ausreichend. 🙄



  • Du weißt natürlich genau was ich will!! *schmatzaufbacke*
    Jetzt geht es so wie ich will!!

    😃 D A N K E 😃



  • Hm jetzt brauch ich dich doch nochmal schnell Ich will dass mein Readonly nicht grau ist! Ich mach:

    switch (nCtlColor) 
        { 
        case CTLCOLOR_STATIC:  // Für alle Statics           
    			pDC->SetTextColor(RGB(0,0,0)); 
                pDC->SetBkColor(RGB(255,255,255));
    
    	case IDC_EDT_ID:
    			pDC->SetTextColor(RGB(255,0,0));
    			pDC->SetBkColor(RGB(255,255,255));
    
        case CTLCOLOR_DLG:     // Für den Dialog             
                return (HBRUSH)m_brush; 
    
    	} 	
    	return hbr;
    

    Jetzt sollte er doch eigentlich nur IDC_EDT_ID rot machne, oder?
    Er macht mir alle statics rot! 😕



  • break soll Wunder wirken. 🤡

    Und ich glaube, nCtlColor hat nix mit IDC_EDT_ID zu tun - falls es also nicht klappen will, guck dir das genauer an. 🙂



  • OK OK ich hab gepennt, aber wenn ich ein Edit disable, ist es dann kein Edit mehr?
    denn wenn ich das hier mache:

    switch (nCtlColor) 
        { 
        case CTLCOLOR_STATIC:  // Für alle Statics           
    			pDC->SetTextColor(RGB(0,0,0)); //<=die sind ROT!!
                pDC->SetBkColor(RGB(255,255,255));
    
    	case CTLCOLOR_EDIT:
    			pDC->SetTextColor(RGB(255,0,0));
    			pDC->SetBkColor(RGB(255,255,255));
    
        case CTLCOLOR_DLG:     // Für den Dialog             
                return (HBRUSH)m_brush; 
    
    	} 	
    	return hbr;
    

    dann färbt er keine disabled Edits. Also nur read-write edits!
    Ach sonst werden die halt alle RW-Edits! 😞



  • Hast du gelesen, was ich oben geschrieben habe? 😃

    Das TODO steht da, weil ich schwarzen Text haben will, der ist aber immer grau. 😡
    Und weil sich das (genauso wie bei Comboboxen und Edits) nicht mal eben verbiegen lässt, was die Textfarbe im deaktivierten Zustand angeht, muss man eine eigene Klasse machen und da selber zeichnen oder andere Kopfstände veranstalten.

    Mach sie ReadOnly und gut ist. 🙂



  • OK ist zwar nicht ganz so schön wie disabled und schwarz aber hast ja recht alles andere ist zu viel aufwand für zu wenig nutzen. Read only kann man sie halt immernoch markieren. Aber jetzt ist es immerhin mal schwarz! Und das ist die Hauptsache.
    DANKE


Anmelden zum Antworten