为了使界面更美观,给系统左边的树形控件加了一个背景图片,给树形控件加载背景图片的方法如下: ①新建一个类CMyTreeCtrl从CTreeCtrl派生
给女儿的信 苏霍姆林斯基添加CBitmap m_bitmap;属性
②在OnPaint()中重画树形控件背景,如下代码:
CDC memdc;
memdc.CreateCompatibleDC(&dc);组胺
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc, rcclient.Width(), rcclient.Height());
memdc.SelectObject( &bitmap );
课题结题报告格式CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0);
CDC maskdc;
maskdc.CreateCompatibleDC(&dc);
CBitmap maskbitmap;
maskbitmap.CreateBitmap(rcclient.Width(), rcclient.Height(), 1, 1, NULL);
maskdc.SelectObject( &maskbitmap );
maskdc.BitBlt( 0, 0, rcclient.Width(), rcclient.Height(), &memdc,
rcclient.left, p, SRCCOPY);
CBrush brush;
networkntr
brush.CreatePatternBrush(&m_bitmap);
dc.FillRect(rcclient, &brush);
memdc.SetBkColor(RGB(0,0,0));
memdc.SetTextColor(RGB(255,255,255));
memdc.BitBlt(rcclient.left, p, rcclient.Width(), rcclient.Height(), &maskdc, rcclient.left,
dc.SetBkColor(RGB(255,255,255));
dc.SetTextColor(RGB(0,0,0));
dc.BitBlt(rcclient.left, p, rcclient.Width(), rcclient.Height(), &maskdc, rcclient.left,
dc.BitBlt(rcclient.left, p, rcclient.Width(), rcclient.Height(), &memdc,
rcclient.left, p,SRCPAINT);
brush.DeleteObject();
③处理树形控件的TVN_ITEMEXPANDING,TVN_ITEMEXPANDED消息响应 在TVN_ITEMEXPANDING(节点展开时)消息响应中防止重画闪屏SetRedraw(FALSE);
在TVN_ITEMEXPANDED(节点展开后)消息响应中强制重画更新背景Invalidate();SetRedraw (TRUE);
④定义SetBKImage(UINT nIDResource)方法设置定义为背景的图片资源,实现如下:
if( m_bitmap.m_hObject != NULL )
m_bitmap.DeleteObject();
if (!m_bitmap.LoadBitmap(nIDResource))
{
return FALSE;
}
⑤将树形控件改为从CMyTreeCtrl派生
常艳日记下载⑥CMyTreeCtrl的方法SetBKImage设置背景
氯化氢M_tree.SetBKImage(IDB_BITMAP1);