MFC : Transparent TreeCtrl from CTreeCtrl
发布日期:2021-06-30 22:06:10
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月23日 11时07分15秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
WebService的简单案例记录(Java)
2019-04-30
Html利用PHP与MySQL交互
2019-04-30
dos简单命令
2019-04-30
mysql的安装与卸载与Navicat远程连接
2019-04-30
java实现稀疏数组及将稀疏数组存入硬盘中
2019-04-30
2021-05-18
2019-04-30
Flutter 使用插件打开相册、相机
2019-04-30
libuv实现tcp代理服务器
2019-04-30
libuv使用不当导致的内存泄漏
2019-04-30
libuv实现ping包发送和接收
2019-04-30
基础架构系列篇-CENTOS7安装NGINX
2019-04-30
基础架构系列篇-系统centos7安装docker+COMPOSE
2019-04-30
基础架构系列篇-NGINX部署VUE
2019-04-30
个人电商项目,基于uni-app+ springcloud +VUE技术
2019-04-30
基础架构系列篇-系统centos7安装kafka
2019-04-30
基础架构系列篇-系统centos7中docker安装分布式文件存储服务minio
2019-04-30
知识点记录-java判断系统是linux或windows
2019-04-30
知识点记录-springboot静态资源映射路径
2019-04-30
微服务springcloud2系列篇-配置与注册nacos组件
2019-04-30
用户权限设计-基于RBAC模型
2019-04-30