在对话框中,有一个ctreectrl,默认情况下,当你点中其中的一个item时,该item变为蓝色,表明该item是当前选择的item。若输入焦点转移至另外一个控件上,该item为灰色。
请问我如何能够自定义这两种颜色,是不是在DrawItem中,请教具体该怎么做?
多谢了!
请问我如何能够自定义这两种颜色,是不是在DrawItem中,请教具体该怎么做?
多谢了!
解决方案 »
- Access 延时问题!!!!!!!!!!!!!!!!!!【不要嫌分少啊,大家帮忙看看】
- 求医,VC6.0 关于IHTMLELEMENT2。
- 请网络编程高手进来指教!!!!!!!!!
- -------->>为何这样定义变量赋值是错的
- 知道treectrl的hwnd,发送什么消息可以让它响应一个函数??
- 请问如何使用V.92协议得到来电号码(CALLER ID)?
- 关于MFC类,CObject……
- 向一个文件中追加文本格式数据的API函数?
- 怎么调用动态连接库呀?
- 请教大侠,对话框背景的问题
- 在Windows DLL中能否调用ActiveX控件(.ocx)?怎么用??
- 怎么在对话框中创建使用滚动条?
{
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);
}
{
LPNMTVCUSTOMDRAW plvcd = (LPNMTVCUSTOMDRAW)pNMHDR;
*pResult = CDRF_DODEFAULT; if (CDDS_PREPAINT == plvcd->nmcd.dwDrawStage)
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if(plvcd->nmcd.dwDrawStage == CDDS_ITEMPREPAINT)
{
if(plvcd->clrTextBk == GetSysColor(COLOR_HIGHLIGHT))
{
plvcd->clrText = GetSysColor(COLOR_HIGHLIGHTTEXT);
plvcd->clrTextBk = RGB(255, 0, 128);
}
else if(plvcd->clrTextBk == GetSysColor(COLOR_INACTIVECAPTIONTEXT))
{
plvcd->clrText = GetSysColor(COLOR_HIGHLIGHTTEXT);
plvcd->clrTextBk = RGB(192, 168, 96);
}
}
}例子代码
http://my.6to23.com/cigarette/tr1.zip