//重画消息 VOID CServerItemView::OnPaint() { CPaintDC dc(this); //剪切位置 CRect rcClip; dc.GetClipBox(&rcClip); //获取位置 CRect rcClient; GetClientRect(&rcClient); //创建缓冲 CDC BufferDC; CBitmap BufferImage; BufferDC.CreateCompatibleDC(&dc); BufferImage.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height()); //设置 DC BufferDC.SelectObject(&BufferImage); //绘画控件 DrawTreeBack(&BufferDC,rcClient,rcClip); DrawTreeItem(&BufferDC,rcClient,rcClip); //绘画背景 dc.BitBlt(rcClip.left,rcClip.top,rcClip.Width(),rcClip.Height(),&BufferDC,rcClip.left,rcClip.top,SRCCOPY); //删除资源 BufferDC.DeleteDC(); BufferImage.DeleteObject(); return; }
void SMCTreeCtrl::DrawItem(IRenderTarget *pRT, CRect & rc, HSTREEITEM hItem) { CRect rcTreeItem = rc; rcTreeItem.right = rcTreeItem.left + m_nTreeWidth; DrawTreeItem(pRT,rcTreeItem,hItem); CRect rcListItem = rc; rcListItem.left = rcTreeItem.right; DrawListItem(pRT,rcListItem,hItem); }
void CEasySkinTreeCtrl::OnPaint() { CPaintDC dc(this); // device context for painting //获取位置 CRect rcClient; GetClientRect(&rcClient); CMemoryDC BufferDC(&dc,rcClient); //剪切位置 CRect rcClipBox; BufferDC.GetClipBox(&rcClipBox); //绘制背景 BufferDC.FillSolidRect(rcClient,m_colBack); DrawParentWndBg(GetSafeHwnd(),BufferDC->GetSafeHdc()); DrawTreeItem(&BufferDC,rcClient,rcClipBox); }