MFC : Transparent TreeCtrl from CTreeCtrl
发布日期:2021-06-30 22:06:10
浏览次数:3
分类:技术文章
本文共 2279 字,大约阅读时间需要 7 分钟。
今天和别人讨论问题, 说到他要在一个不透明的窗体上放一个透明的CTreeCtrl.
在CodeProject上找了些资料, 集成了一下. 实现了一个简单的效果.
效果图:
工程下载点:
编译环境 : vs2010 vc++ MFC dlg
代码预览:
CTreeCtrl 的继承类
#pragma once// CMyTreeCtrlclass CMyTreeCtrl : public CTreeCtrl{ DECLARE_DYNAMIC(CMyTreeCtrl)public: CMyTreeCtrl(); virtual ~CMyTreeCtrl();protected: //{ {AFX_MSG(CMyTreeCtrl) afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); afx_msg void OnCustomdraw(NMHDR* pNMHDR, LRESULT* pResult); //}}AFX_MSG DECLARE_MESSAGE_MAP()private: CBrush m_Brush;};
// MyTreeCtrl.cpp : implementation file//#include "stdafx.h"#include "testTreeCtrl.h"#include "MyTreeCtrl.h"// CMyTreeCtrlIMPLEMENT_DYNAMIC(CMyTreeCtrl, CTreeCtrl)CMyTreeCtrl::CMyTreeCtrl(){}CMyTreeCtrl::~CMyTreeCtrl(){}BEGIN_MESSAGE_MAP(CMyTreeCtrl, CTreeCtrl) //{ {AFX_MSG_MAP(CMyTreeCtrl) ON_WM_CTLCOLOR_REFLECT() ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomdraw) //}}AFX_MSG_MAPEND_MESSAGE_MAP()HBRUSH CMyTreeCtrl::CtlColor(CDC* pDC, UINT nCtlColor) { m_Brush.DeleteObject(); m_Brush.CreateStockObject(HOLLOW_BRUSH); pDC->SetBkMode(TRANSPARENT); return (HBRUSH)m_Brush;}void CMyTreeCtrl::OnCustomdraw ( NMHDR* pNMHDR, LRESULT* pResult ){ NMLVCUSTOMDRAW* pLVCD = reinterpret_cast调用端代码:( pNMHDR ); *pResult = CDRF_DODEFAULT; switch (pLVCD->nmcd.dwDrawStage) { case CDDS_ITEM: case CDDS_POSTPAINT: case CDDS_PREERASE: case CDDS_POSTERASE: case CDDS_ITEMPOSTPAINT : case CDDS_ITEMPREERASE : case CDDS_ITEMPOSTERASE : break ; case CDDS_PREPAINT : *pResult = CDRF_NOTIFYITEMDRAW; break ; case CDDS_ITEMPREPAINT : { pLVCD->clrTextBk = RGB(130, 130, 130); pLVCD->clrText = RGB(39, 39, 39); } break ; }}// CMyTreeCtrl message handlers
CMyTreeCtrl m_MyTreeCtrl;
void CtestTreeCtrlDlg::DoDataExchange(CDataExchange* pDX){ CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_MY_TREE, m_MyTreeCtrl);}
void CtestTreeCtrlDlg::TreeInit(){ HTREEITEM item = NULL; HTREEITEM itemSub = NULL; item = m_MyTreeCtrl.InsertItem(L"根节点", NULL); if (NULL != item) { itemSub = m_MyTreeCtrl.InsertItem(L"子节点1", item); itemSub = m_MyTreeCtrl.InsertItem(L"子节点2", item); m_MyTreeCtrl.Expand(item, TVE_EXPAND); }}
转载地址:https://lostspeed.blog.csdn.net/article/details/46851719 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年05月02日 21时44分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
备案问题汇总
2019-05-01
“头号玩家”距离我们究竟有多远?
2019-05-01
首批!金山云获得可信金融云解决方案认证
2019-05-01
金山云张斯聪:探索沉浸式解决方案 提升教育云上体验
2019-05-01
高防弹性IP 金山云荣获“可信云技术最佳实践--网络安全”奖
2019-05-01
一周拿下百度Offer!211本+985硕+计算机专业~
2019-05-01
闭关三月!猛男逆道而行,四杀斩获阿里 / 腾讯 / 京东 / 百度等大厂 offer
2019-05-01
上线三天获 22w 浏览量!2021 最新一线大厂 Java 高级架构师面试题总结~
2019-05-01
电信物联网平台SOTA升级(软件升级)的全流程说明
2019-05-01
电信物联网平台插件开发相关总结
2019-05-01
ARM之一 分散加载文件(scatter)详述
2019-05-01
centos6 python3.6 安装配置jupyer
2019-05-01
CDH5.14 spark2.4.0配置python3 以及读取hive表
2019-05-01
VMware安装centos7.2后配置网络并设置固定ip
2019-05-01
在 centos7.2安装docker 并设置阿里云源
2019-05-01
centos7.2 将mysql添加到服务中
2019-05-01
【linux用户模块】/etc/passwd的字段含义
2019-05-01
【linux用户模块】用户/用户组的管理
2019-05-01