请问一个TREECTRL自绘的问题

alionx 2003-10-18 09:01:57
把TREECTRL设置了SHOWSELECTALWAY风格后
默认是选中的ITEM背景色为灰色
请问如何更该这个灰色为自定义的颜色??
谢谢!
...全文
95 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
alionx 2003-10-18
  • 打赏
  • 举报
回复
虽然没有彻底解决,但也做了一个简单的自绘,基本合要求了^_^
非常感谢你的帮助,谢谢!
akiko 2003-10-18
  • 打赏
  • 举报
回复
派生个子类CMyTreeCtrl
void CMyTreeCtrl::OnPaint()
{
CPaintDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CRect rcClip, rcClient;
dc.GetClipBox(&rcClip);
GetClientRect(&rcClient);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height());
memDC.SelectObject(&bitmap);
CRgn rgn;
rgn.CreateRectRgnIndirect(&rcClip);
memDC.SelectClipRgn(&rgn);
rgn.DeleteObject();
CWnd::DefWindowProc(WM_PAINT,(WPARAM)memDC.m_hDC,0);
HTREEITEM hItem = GetFirstVisibleItem();
int n = GetVisibleCount()+1;
while(hItem && n--)
{
CRect rect;
CFont *pFontDC;
CFont fontDC;
LOGFONT logfont;
CFont *pFont = GetFont();
pFont->GetLogFont(&logfont);
fontDC.CreateFontIndirect(&logfont);
UINT selflag = TVIS_DROPHILITED | TVIS_SELECTED;
pFontDC = memDC.SelectObject(&fontDC);
CString sItem = GetItemText(hItem);
GetItemRect( hItem, &rect, TRUE );
if (!(GetItemState(hItem, selflag) & selflag))memDC.SetBkColor(RGB(0,255,0));
else memDC.SetBkColor(RGB(255,0,0));
memDC.TextOut(rect.left+2,rect.top+1,sItem);
memDC.SelectObject(pFontDC);
hItem = GetNextVisibleItem(hItem);
}
dc.BitBlt(rcClip.left,rcClip.top,rcClip.Width(),rcClip.Height(),&memDC,
rcClip.left,rcClip.top,SRCCOPY);
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧