给CTREECTRL加背景图片

为了使界面更美观,给系统左边的树形控件加了一个背景图片,给树形控件加载背景图片的方法如下:
①新建一个类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);

本文发布于:2024-09-21 01:49:40,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/576502.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:控件   背景   树形   重画   方法   消息   响应
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议