请问一个TREECTRL自绘的问题 把TREECTRL设置了SHOWSELECTALWAY风格后默认是选中的ITEM背景色为灰色请问如何更该这个灰色为自定义的颜色??谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 派生个子类CMyTreeCtrlvoid 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);} HWND_TOPMOST的弹出式窗口始终在最前面 32位BMP文件转换成8位灰度图的问题 痛苦的高位指令引用内存错误,怎么查找原因啊? WebBrowser控件事件中使用SetUIHandler函数的问题 线程的安全终止 请问关于对话框OnCancel()时的错误? 请问如何更新所有的视图? 关于CopyFile(...)的使用 IE编程的问题-如何正确的得到IHTMLDocument2接口? 还请高手指教:怎么规划系统的模块? SOS!有谁知道如何输出数据透析图表SOS! 很难:如何创建一下空白的状态条,里面什么都没有的那种?
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);
}