OnCtlColor wird nicht aufgerufen (CFormView)



  • Hallo!

    Ich habe mit dem Quellcode von einem anderen Beitrag eben mal versucht, meine Listbox auf einer FormView einzufärben, damit die entlich nicht mehr weiß ist, wenn sie deaktiviert ist.

    Aber selbst wenn ich Breakpoints in die Funktion setze wird sie nicht aufgerufen. Habe ich was vergessen?

    In Header:

    HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    

    Im cpp:

    HBRUSH CFilialenView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    	HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor); 
    
        if (pWnd->GetDlgCtrlID() == IDC_LST_MITARBEITER) 
        { 
            HBRUSH B = CreateSolidBrush(::GetSysColor(COLOR_3DFACE)); //Hintergrundfarbe 
            return (HBRUSH) B; 
        } 
    
        return hbr; 
    }
    

    Der Name stimmt auch... 😞



  • Hi estartu_de,

    versuch mal in der Header-Datei

    protected:
         afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    


  • Hilft nicht. 😞
    Auch nicht, wenn ich es in den Bereich mit //{{AFX_MSG(CFilialenView)
    schiebe.

    btw: Wurde das afx_msg nicht sowieso durch "nichts" ersetzt und dient nur dem Verständnis? Oder hab ich da was durcheinander gebracht?

    Muss da noch was in die MessageMap? 😕



  • So, nach nochmaliger Suche in der MSDN und im Classwizard:

    Ja, da fehlt was in der MessageMap.

    ON_WM_CTLCOLOR()
    

    Jetzt geht es.



  • Hab mal bei codeguru gesucht.
    Viele interessante Themen z.B. CView Backgroundcolor findest Du hier
    http://www.codeguru.com/Cpp/W-D/doc_view/

    UPS, zu spät. 😉


Anmelden zum Antworten