void CLeftView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
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);
memDC.SetTextColor(RGB(255,0,0));
CFont *pFont = GetFont(); //使用系统字体
memDC.SelectObject(pFont);
CRgn rgn;
rgn.CreateRectRgnIndirect( &rcClip );
memDC.SelectClipRgn(&rgn);
rgn.DeleteObject();
CWnd::DefWindowProc( WM_PAINT, (WPARAM)memDC.m_hDC, 0 );
int p = 0,q = 0;
HTREEITEM hItem = GetTreeCtrl().GetFirstVisibleItem();
GetTreeCtrl().GetItemImage(hItem,p,q);
int n = GetTreeCtrl().GetVisibleCount()+1;
while( hItem && n--)
{
CRect rect;
CString sItem = GetTreeCtrl().GetItemText( hItem );
if (!m_setEncryUser.count(LPCTSTR(sItem)) && p!=0)
{
//获取节点区域
GetTreeCtrl().GetItemRect( hItem, &rect, TRUE );
//向内存中的图片写入内容,为该节点的内容
memDC.TextOut( rect.left+2, rect.top+1, sItem );
}
hItem = GetTreeCtrl().GetNextVisibleItem( hItem );
GetTreeCtrl().GetItemImage(hItem,p,q);
}
dc.BitBlt( rcClip.left, rcClip.top, rcClip.Width(), rcClip.Height(), &memDC,
rcClip.left, rcClip.top, SRCCOPY );
// Do not call CTreeView::OnPaint() for painting messages
}
dc重绘树状结构
最新推荐文章于 2021-03-03 19:54:04 发布