RT
需要在某种事件触发的时候才改变CTree中某一个对应项的颜色
需要在某种事件触发的时候才改变CTree中某一个对应项的颜色
解决方案 »
- 驱动开发中,关于自旋锁的问题
- 真奇怪,我发的贴子怎么显示不出来啊?
- 怎么把timeval格式转变到CString格式呢?
- 请问如何在VC下进行简单文件的编译调试?
- udp穿越nat
- 我写两个类CXPButton和CSkinButton,是由CButton继承下来的,详情请进来看看!
- 有关内存映射文件操作的疑问
- 解析XML,使用#import <msxml.dll> 方法在98下不行,怎么办?
- 用 windows media sdk 开发 视频 怎么做,如果谁有代码能否让我看一看,我有些设置不对。
- 请问:怎么得到文本框的内容和长度,谢谢
- vc http 请求
- colordialog设置字颜色的问题
{
// TODO: Add your message handler code here and/or call default
NM_TREEVIEW* pnmtv = (NM_TREEVIEW*)pNMHDR;
*pResult=CDRF_NOTIFYITEMDRAW;
//
LPNMTVCUSTOMDRAW pDraw=(LPNMTVCUSTOMDRAW)pNMHDR;
DWORD dwDrawStage=pDraw->nmcd.dwDrawStage; if(dwDrawStage & CDDS_ITEM)
{
HTREEITEM hItem=(HTREEITEM) pDraw->nmcd.dwItemSpec;
CString txt=m_Tree.GetItemText(hItem);
if(txt.Find( "本地磁盘 (C:)" ) > -1)// found
{//
pDraw->clrTextBk=0xFF;// red
pDraw->clrText =0xFFFFFF;// white
}
}
}
afx_msg void OnCustDrawTree(NMHDR* pNMHDR,LRESULT* pResult);
ON_NOTIFY(NM_CUSTOMDRAW, IDC_TREE1,OnCustDrawTree)void CCTreeCtrlDlg::OnCustDrawTree(NMHDR *pNMHDR, LRESULT *pResult)
{
NM_TREEVIEW* pnmtv=(NM_TREEVIEW*)pNMHDR;
*pResult=CDRF_NOTIFYITEMDRAW;
LPNMTVCUSTOMDRAW pDraw=(LPNMTVCUSTOMDRAW)pNMHDR;
DWORD dwDrawStage=pDraw->nmcd.dwDrawStage; if(dwDrawStage&CDDS_ITEM)
{
HTREEITEM hItem=(HTREEITEM)pDraw->nmcd.dwItemSpec;
//CString txt=m_tree.GetItemText(hItem);
CString txt=m_tree.GetItemText(hItem);
if(txt.Find("±¾µØ´ÅÅÌ(C:)")>-1)
{
pDraw->clrTextBk=0xFF;
pDraw->clrText=0xFFFFFF;
}
}
}但是没反应
{
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);
//
CPoint pt;
GetCursorPos(&pt);
ScreenToClient(&pt);
MapWindowPoints(&m_tree,&pt,1);
// afxDump << pt << "\n";
UINT flag=TVHT_ONITEMLABEL;
HTREEITEM hSelect=m_tree.HitTest(pt,&flag);
//
CRect rc;
HTREEITEM hItem=(HTREEITEM) pDraw->nmcd.dwItemSpec;
m_tree.GetItemRect(hItem,&rc,TRUE);//FALSE);text only
CString txt=m_tree.GetItemText(hItem);
//
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;
}
}