• MFC控件:树形控件(CTreeCtrl)


    树形控件划分:

      根节点:所有都收缩后的节点

      节点:    能展开

      叶:  不能展开

      说明: 节点和叶不是绝对的划分,当在对叶添加新下属后,该叶变为节点

    树形控件操作逻辑:

    1、创建控件 CTreeCtrl类的Create成员函数的原型如下:

    virtual BOOL Create(
        DWORD dwStyle,      //控件风格
        const RECT& rect,    //控件窗口的位置和大小
        CWnd* pParentWnd,    //控件父窗口的指针
        UINT nID          //控件的ID
    );

      控件的主要风格以及含义。 TVS_DISABLEDRAGDROP:禁止树形控件发送TVN_BEGINDRAG通知消息,即不支持拖动操作;TVS_EDITLABELS:用户可以编辑节点的标签文本;TVS_HASBUTTONS:显示带有"+"或"-"的小方框来表示某项能否被展开或已展开;TVS_HASLINES:在父节点与子节点间连线以更清晰地显示树的结构;TVS_LINESATROOT:在根节点处连线;TVS_SHOWSELALWAYS:即使控件失去输入焦点,仍显示出项的选择状态;同样,动态创建树形控件时,除了能够指定上述风格的组合外,一般还要指定WS_CHILDWS_VISIBLE风格。

    2.添加图标类

    3.添加节点

    4.消息响应函数

    树形控件添加:

      节点结构体:  HTREEITEM ,用该结构体声明节点变量

      为控件添加项:  

    HTREEITEM InsertItem(
    LPCTSTR lpszItem,            //项名
    int nImage,                //树视图控件图像列表中的项的图像的索引
    int nSelectedImage,           //树视图控件图像列表中的项的所选图像的索引
    HTREEITEM hParent = TVI_ROOT,     //插入的项的父级的句柄
    HTREEITEM hInsertAfter = TVI_LAST  //新的项之前要插入的项的句柄
    );
    注:添加项之前先设定根节点,在初始化

    树形控件鼠标点击:

      判断鼠标位置

    HTREEITEM CMyTreeDlg::GetSelectTree()
    {
        CPoint pt;
        GetCursorPos(&pt);//得到当前鼠标的位置
        m_MyTree.ScreenToClient(&pt);//将屏幕坐标转换为客户区坐标
        HTREEITEM tree_Item = m_MyTree.HitTest(pt);//调用HitTest找到对应点击的树节点
        return tree_Item; //返回鼠标位置节点
    }

      获取某项文本

      CString GetItemText(HTREEITEM hItem) const;

      获取指定关系项

      HTREEITEM GetNextItem( HTREEITEM hItem, UINT nCode) const;

      nCode标志可以是下列值之一︰TVGN_CARET检索当前所选的项TVGN_CHILD检索由指定的项的第一个子项目hItem参数。TVGN_DROPHILITE检索拖放操作的目标的项TVGN_FIRSTVISIBLE检索第一个可见项TVGN_LASTVISIBLE检索在树中最后一个展开的项目。 这并不检索树视图窗口中可见的最后一项TVGN_NEXT检索下一个同级项TVGN_NEXTVISIBLE检索遵循指定的项的下一个可见项TVGN_PARENT检索指定项的父级TVGN_PREVIOUS检索前面的同级项TVGN_PREVIOUSVISIBLE检索位于指定的项的第一个可见项TVGN_ROOT检索指定的项的一部分的根项的第一个子级项

       获取指定项的父项

      HTREEITEM GetParentItem(HTREEITEM hItem) const;

  • 相关阅读:
    sqlserver的版本号
    看了wcf后的一些疑问,请高手指导
    vs2008怎么与vss2005集成(已解决)
    下载的文件名问题[转]
    问题解答
    常见问题FAQ
    参观用友(UFIDA)产业园流水账~~
    问题解答
    Langzhi RAD Framework
    常见问题FAQ
  • 原文地址:https://www.cnblogs.com/sepmaple/p/9552957.html
Copyright © 2020-2023  润新知