MFC树控件未提供节点后加图标的方法,需要自己重绘来实现。
主要方法是,响应NM_CUSTOMDRAW消息,在每个节点后添加自己要展示的图标。
关于NM_CUSTOMDRAW消息的说明,见http://msdn.microsoft.com/en-us/library/ms833744.aspx。
显示效果,如下图。
1、实现源码
重绘树控件类CMyTreeCtrl。
MyTreeCtrl.h
#pragma once
//节点信息
struct NodeInfo
{
NodeInfo()
: strName(_T(""))
, nType(0)
, bImage(false)
{
}
CString strName;//节点名称
int nType;//节点类型
bool bImage;//是否有图标
};
class CMyTreeCtrl : public CTreeCtrl
{
public:
CMyTreeCtrl(void);
virtual ~CMyTreeCtrl(void);
protected:
//{
{AFX_MSG(CMutiTreeCtrl)
DECLARE_MESSAGE_MAP()
afx_msg void OnCustomDraw(NMHDR *pNMHDR, LRES