MFC : Transparent TreeCtrl from CTreeCtrl
来源:互联网 发布:windows xp下载 msdn 编辑:程序博客网 时间:2024/06/10 01:00
今天和别人讨论问题, 说到他要在一个不透明的窗体上放一个透明的CTreeCtrl.
在CodeProject上找了些资料, 集成了一下. 实现了一个简单的效果.
效果图:
工程下载点: testTransparentTreeCtrl.zip
编译环境 : 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_MSGDECLARE_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<NMLVCUSTOMDRAW*>( 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); }}
0 0
- MFC : Transparent TreeCtrl from CTreeCtrl
- 树形控件TreeCtrl关联的MFC中的类:CTreeCtrl
- MFC使用TreeCtrl控件
- MFC控件之TreeCtrl
- MFC TreeCtrl实例
- MFC - 树TreeCtrl使用
- MFC使用TreeCtrl控件
- mfc TreeCtrl 排序
- mfc TreeCtrl 遍历
- MFC--CTreeCtrl
- MFC控件篇之TreeCtrl
- mfc treectrl失去焦点后高亮
- TreeCtrl的使用和一个CTreeCtrl的派生类
- MFC控件应用--CTreeCtrl
- MFC - CTreeCtrl操作
- C++ mfc 之 CTreeCtrl
- TreeCtrl
- mfc 给CTreeCtrl添加右键菜单CTreeCtrl
- 项目管理工具Maven(二)
- Codevs2038香甜的黄油题解
- java 堆排序
- Web中树形数据(层级关系数据)的实现—以行政区树为例(二)
- 数据库基础语句的类别
- MFC : Transparent TreeCtrl from CTreeCtrl
- C++对象模型(很详细)
- Linux下使用mount命令挂载CDROM
- aspectJ切面使用
- I/O-输入输出流
- 腾讯云更改yum源
- Dos命令查看端口占用及关闭进程
- Debug Assertion Failed问题解决
- ROS学习手记 9 -- 阶段性复习