CTreeCtrl Problem!



  • Hallo Forum,
    kann man die Rootitems von diesen CTreeCtrl Kontrolls farbig darstellen wenn sie
    unterelemente haben??
    Hat jemand so was schon gemacht!?

    Ich hab versucht mit der ON_NOTIFY()

    // in MessageMap
    ON_NOTIFY(NM_CUSTOMDRAW, IDC_TREE1, OnCustomDraw)
    
    //....
    
    BOOL CWeb::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
    {
    
    	NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
    
    	*pResult = CDRF_DODEFAULT;
    	CTreeCtrl* bItem = (CTreeCtrl *) pLVCD->nmcd.lItemlParam ;
    
    	CString csItemText;
    	switch (pLVCD->nmcd.dwDrawStage) 
    	{
    		case CDDS_PREPAINT :
    			*pResult = CDRF_NOTIFYITEMDRAW  ;			
    			break ;
    		case CDDS_ITEMPREPAINT :
    
    			if ( bItem ) // das ist Problem, ist immer NULL!!!! Warum??
    			{
    
    				pLVCD->clrTextBk = crBlau;
    				pLVCD->clrText   = crGruen;
    
    			}
    
    			break ;
    	}
    
    	return TRUE;
    }
    

    Leider hab ich nie den Bezug auf das Control, ich möchte wenn dies weiter Unterelemente hat, z.B. Grün dargestellt wird, hier ist nur ein teil der Funktion
    um mein Versuch zu zeigen, was muß noch erweitert werden damit das funktioniert...

    Danke
    pixel


  • Mod

    pixel schrieb:

    CTreeCtrl* bItem = (CTreeCtrl *) pLVCD->nmcd.lItemlParam ;
    

    Dieser cast ist unsinnig. Du mbekommst hier die Daten die im TVITEM::lParam eingetragen hast.

    pixel schrieb:

    NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
    

    Das ist ein Treeview und kein ListCtrl, also ist es eine NMTVCUSTOMDRAW!

    Sieh DIr mal das Beispiel
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;q248496
    an



  • Hallo,
    danke für den Link, erledigt! Zwar nicht ganz so wie in dem Beispiel aber es tut das was ich gewollt habe!
    Einzelnen Treeitems nach kriterien unterschiedliche Farben geben....

    mfg
    pixel


Anmelden zum Antworten