小弟我自己写了一个树形控件,具有改变指定项的颜色的功能!颜色一致没有发生任何改变?那里出了有关问题?请高手指教一上!用!多谢

我自己写了一个树形控件,具有改变指定项的颜色的功能!颜色一致没有发生任何改变?那里出了问题?请高手指教一下!急用!!谢谢!
我自己写了一个树形控件,具有改变指定项的颜色的功能,函数为:
void CMyTreeCtrl::SetItemColor(HTREEITEM hItem, COLORREF color)
{
Color_Font cf;
if( !m_mapColorFont.Lookup( hItem, cf ) )
cf.logfont.lfFaceName[0] = '/0';
cf.color = color;
m_mapColorFont[hItem] = cf;

}
我在使用时:
COLORREF C=RGB(222,123,44);
CMyTreeCtrl m_Tree;
m_Tree.SetItemColor(m_Root,C);
查看c=2591134
我 查看颜色赋值情况:
COLORREF D=m_Tree.GetItemColor(m_Root);
D=2591134

说明颜色赋值成功了,但是界面一选项的颜色一致没有发生任何改变?那里出了问题?请高手指教一下!急用!!谢谢!

------解决方案--------------------
你赋给新的颜色后再刷新试试
------解决方案--------------------
Ctreectrl没有提供相应接口!


------解决方案--------------------
Ctreectrl没有提供相应接口,
你要自己实现。
------解决方案--------------------
下面的例子,改变选择项为 红色:
void CTreectrlDlg::OnCustDrawTree(NMHDR *pNMHDR,LRESULT *pResult)
{
LPNMTVCUSTOMDRAW pDraw=(LPNMTVCUSTOMDRAW)pNMHDR;
DWORD dwDrawStage=pDraw->nmcd.dwDrawStage;
UINT  uItemState =pDraw->nmcd.uItemState;
//
*pResult=CDRF_NOTIFYITEMDRAW;
//
------解决方案--------------------
CDRF_NOTIFYPOSTPAINT
------解决方案--------------------
CDRF_NOTIFYSUBITEMDRAW
------解决方案--------------------
CDRF_NOTIFYPOSTERASE;
CDC* pdc=CDC::FromHandle(pDraw->nmcd.hdc);

HTREEITEM hSelect=m_Tree.GetSelectedItem();
//
CRect rc;
HTREEITEM hItem=(HTREEITEM) pDraw->nmcd.dwItemSpec;
m_Tree.GetItemRect(hItem,&rc,TRUE);//FALSE);text only
CString txt=m_Tree.GetItemText(hItem);
// label only !
if((dwDrawStage & CDDS_ITEM) && (hItem==hSelect))// not (uItemState & CDIS_SELECTED))
{// 
pdc->FillSolidRect(&rc,RGB(255,0,0));//clr);
//
pdc->SetTextColor(RGB(255,255,255));//white
pdc->SetBkColor(RGB(255,0,0));//clr);
//
if(!m_bFontInited)
{
m_bFontInited=TRUE;
CDC *pDC=GetDC();
int cyFont=-MulDiv(8,pDC->GetDeviceCaps(LOGPIXELSY),72);//cyFont=-11
m_hItalicFont.CreateFont(cyFont,0,0,0,FW_THIN,TRUE,
 FALSE,FALSE,0,0,0,0,0,_T("Arial"));
}
CFont* pfnt=pdc->GetCurrentFont();
pdc->SelectObject(&m_hItalicFont);//pfnt);
//
pdc->TextOut(rc.left+2,rc.top+2,txt);
pdc->SelectObject(pfnt);

*pResult 
------解决方案--------------------
= CDRF_SKIPDEFAULT;// there are also image, box ...
}
}

------解决方案--------------------
"这个我用过,没效果"
怎么没效果, 有效果的代码!
只是 你 要 自己 修改 item :
if((dwDrawStage & CDDS_ITEM) && (hItem==hSelect))
这个 hSelect 现在就是你 SetItemClor 后 的 Item