CTreeCtrl的基本用法

 

1.  重载CTreeCtrl

class CPopMenuTreeCtrl : public CTreeCtrl

2.  增加消息函数

void CPopMenuTreeCtrl::OnRButtonDown(UINT nFlags, CPoint point)

{

       HTREEITEM hItem = HitTest(point,&nFlags);

        SelectItem(hItem);

       CTreeCtrl::OnLButtonDown(nFlags, point);

}

 

void CPopMenuTreeCtrl::OnLButtonDown(UINT nFlags, CPoint point)

{

       HTREEITEM hItem = HitTest(point,&nFlags);

      SelectItem(hItem);

       CTreeCtrl::OnLButtonDown(nFlags, point);

}

3.  在主对话框中增加树形数据的初始化

void CMainDlg::OnDisplayType()

{

       m_cTypeTree.DeleteAllItems();

       //增加根节点

       HTREEITEM hRoot = m_cTypeTree.InsertItem("分类管理");

       m_cTypeTree.SetItemData(hRoot,NULL_ITEM);

      

       //增加其他节点

       HTREEITEM hItem = NULL;

       for( int i=0; i<m_TypeList.size(); i++)

       {

              hItem = m_cTypeTree.InsertItem(m_TypeList[i].GetName(),0,0,hRoot);

              m_cTypeTree.SetItemData(hItem,m_TypeList[i].GetID());

       }

}

4.  在主对话框中增加消息函数

    void CMainDlg::OnClickTreeTrigger(NMHDR* pNMHDR, LRESULT* pResult)

{

       HTREEITEM hItem = m_cTypeTree.GetSelectedItem();

       if(hItem != NULL)

       {

              int nID = m_cTypeTree.GetItemData(hItem);

              if(nID == NULL_ITEM)//根节点

              {

              }

              else//子节点

              {

              }

       }

       *pResult = 0;

}

 

void CMainDlg::OnRclickTreeTrigger(NMHDR* pNMHDR, LRESULT* pResult)

{

       HTREEITEM hItem = m_cTypeTree.GetSelectedItem();

       if(hItem != NULL)

       {

              int nID = m_cTypeTree.GetItemData(hItem);

              if(nID == NULL_ITEM)//根节点

              {

              }

              else//子节点

              {

              }

       }

       *pResult = 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如需要源代码,请发邮件给我。动态库中提供获取作者的Email接口函数 public: //功能:获取作者邮箱 //输入:无 //输出:无 //返回:作者信息 CString GetAutherEmail(); //功能:判断输入的节点句柄是否存在 //参数:[in] hItem 节点句柄 //返回:true节点存在,false节点不存在 bool FindItemExist(HTREEITEM hItem); //功能:设置一个节点字体颜色 //参数:[in] hItem 节点句柄 // [in] clrText 节点字体颜色 //返回:true设置字体颜色成功,false设置字体颜色失败 //注:内部不包含刷新 bool SetItemTextColor(HTREEITEM hItem, COLORREF clrText); //功能:获取一个节点字体颜色 //参数:[in] hItem 节点句柄 // [out] clrText 节点字体颜色 //返回:true获取字体颜色成功,false获取字体颜色失败 //注:内部不包含刷新 bool GetItemTextColor(HTREEITEM hItem, COLORREF &clrText;); //功能:设置扩展按钮的边框颜色 //参数:[in] clrButtonBorder 扩展按钮的边框颜色 //返回:无 //注:内部包含刷新 void SetExpandedButtonBorder(COLORREF clrButtonBorder); //功能:设置扩展按钮的十字颜色 //参数:[in] clrButtonCross 扩展按钮的十字颜色 //返回:无 //注:内部包含刷新 void SetExpandedButtonCross(COLORREF clrButtonCross); //功能:刷新背景 //输入:无 //输出:无 void RedrawTreeCtrl(); //功能:设置画线的样式 //输入:[in] nPenStyle 画线样式 // [in] nWidth 画线宽度 // [in] crColor 画线颜色 //返回:无 //注:内部包含刷新 void SetPenLineStyle(int nPenStyle, int nWidth, COLORREF crColor); protected: //功能:判断输入的节点句柄是否存在 //参数:[in] hItem 节点句柄 //返回:true节点存在,false节点不存在 bool FindChildItemExist(HTREEITEM hParantItem, HTREEITEM hItem); //功能:绘制文字 //参数:[in] pDC 设备DC //返回:无 void OnDrawText(CDC *pDC); //功能:绘制一个节点文字 //参数:[in] pDC 设备DC // [in] hItem 节点句柄 //返回:true成功,false失败 bool OnDrawItemText(CDC *pDC, HTREEITEM hItem); //功能:绘制展开按钮 //参数:[in] pDC 设备DC //返回:无 void OnDrawButton(CDC *pDC); //功能:绘制一个节点展开按钮 //参数:[in] pDC 设备DC // [in] hItem 节点句柄 //返回:true成功,false失败 bool OnDrawItemButton(CDC *pDC, HTREEITEM hItem); //功能:绘制一个节点展开按钮(节点展开) //参数:[in] pDC 设备DC // [in] hItem 节点句柄 //返回:true成功,false失败 bool OnDrawItemButtonExpanded(CDC *pDC, HTREEITEM hItem); //功能:绘制一个节点展开按钮(节点未展开) //参数:[in] pDC 设备DC // [in] hItem 节点句柄 //返回:true成功,false失败 bool OnDrawItemButtonNotExpanded(CDC *pDC, HTREEITEM hItem); //功能:绘制节点连接线 //参数:[in] pDC 设备DC //返回:无 void OnDrawLines(CDC *pDC); //功能:绘制根节点连接线 //参数:[in] pDC 设备DC //返回:无 void OnDrawItemLines(CDC *pDC, HTREEITEM hItem); private: //功能:获取画线的区域(排除扩展按钮的区域) //参数:无 //返回:创建的画线的区域 void CreateRgnForDrawLines(CRgn &rgnDraw;);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值