CTreeCtrl控件

在这里,你可以获得以下信息:
1. CTreeCtrl 样式及设置
2. 扩展样式设置
3. 数据插入


 

CTreeCtrl控件
 
 +CObject
  +CCmdTarget
   +CWnd
    +CTreeCtrl

1. CTreeCtrl 样式及设置
 LONG lStyle;
 lStyle=GetWindowLong(m_TreeCtrl.m_hWnd, GWL_STYLE); //获取当前窗口style
 lStyle &= ~LVS_TYPEMASK; //清除显示方式位
 lStyle |= TVS_HASBUTTONS //有按钮(+-号)
 |TVS_HASLINES //线条
 |TVS_LINESATROOT //根部线
 |TVS_CHECKBOXES; //单选框
 SetWindowLong(m_TreeCtrl.m_hWnd, GWL_STYLE, lStyle);

2. 扩展样式设置
 DWORD dwStyle = m_TreeCtrl.GetStyle();
 dwStyle &= ~LVS_TYPEMASK; //清显示位
 dwStyle |= WS_EX_STATICEDGE; //静态边缘
 m_TreeCtrl.ModifyStyleEx(0, dwStyle);

3. 数据插入
 //直插
 CString str;
 HTREEITEM hRootItem;
 hRootItem=m_TreeCtrl.InsertItem("Root");
 for(int i=0; i<8; i++)
 {
 str.Format("Item %d", i);
 m_TreeCtrl.InsertItem(str,-1,-1,hRootItem); //插入在 Root 下
 }

 //TVINSERTSTRUCT 结构插法
 TVITEM tvItem;
 tvItem.mask=TVIF_TEXT;
 tvItem.pszText="Item by TVITEM";

 TVINSERTSTRUCT tvstruct;
 tvstruct.hParent=m_TreeCtrl.InsertItem("Root-2");
 tvstruct.hInsertAfter=TVI_FIRST; //TVI_ROOT;
 tvstruct.item=tvItem; //做为一个参数传递
 m_TreeCtrl.InsertItem(&tvstruct);

 //---------------------相关信息-----------------------------
 Header:这3个结构定义在commctrl.h

 //TVINSERTSTRUCT 结构
  typedef struct tagTVINSERTSTRUCT {
 HTREEITEM hParent;  //父项的句柄。值为TVI_ROOT或NULL时,该项作为根插入。
 HTREEITEM hInsertAfter;  //插入的新项之后的项的句柄。或是下列值之一,详情见 注1
 #if (_WIN32_IE >= 0x0400)
  union
  {
  TVITEMEX itemex;
  TVITEM item;  //包含关于项添加的信息
  } DUMMYUNIONNAME;
 #else
  TVITEM item;
 #endif
  } TVINSERTSTRUCT, FAR *LPTVINSERTSTRUCT;

 //TVITEM 结构
  typedef struct tagTVITEM
  {
 UINT      mask;  //包含有效数据的标记数组,详情见 注2
 HTREEITEM hItem; //该函数引用的项  
 UINT      state; //位标记和图像列表索引的设置,指出项的状态
 UINT      stateMask; //设置状态图像索引用INDEXTOSTATEIMAGEMASK,没有状态图像设置索引为0
 LPTSTR    pszText; //指向一个以空字符结束的字符串
 int       cchTextMax; //pszText成员指定缓冲的大小,以字符为单位
 int       iImage; //当项是在非选择状态中时,是树形控件的图像列表的索引
 int       iSelectedImage; //当项被选择时,是树形控件图像列表的索引。
 int       cChildren; //标记指出哪一个项有关联的子项
 LPARAM    lParam; //与这项相关的32位值
  } TVITEM, FAR *LPTVITEM;


 //NMTREEVIEW 结构
  typedef struct tagNMTREEVIEW {
 NMHDR hdr;  //NMHDR结构,包含了关于这个通知消息的信息
 UINT action;  //通知指定的动作标记
 TVITEM itemOld;  //包含关于旧项状态信息的TVITEM结构。通知消息没有使用它时,这个成员为0
 TVITEM itemNew;  //包含关于新项状态信息的TVITEM结构。通知消息没有使用它时,这个成员为0
 POINT ptDrag;  //包含引起通知消息发送的事件信息的POINT结构
  } NMTREEVIEW, FAR *LPNMTREEVIEW;

 注1:   (TVINSERTSTRUCT { HTREEITEM hInsertAfter; ... } )
  TVI_FIRST 在列表的开始插入项
  TVI_LAST 在列表的最后插入项
  TVI_ROOT 作为一个根项添加
  TVI_SORT 以字母顺序插入项

 注2:   (TVITEM { UINT mask; ... } )
  指出其它的结构成员哪些包含有效数据的标记数组。当这个结构被TVM_GETITEM消息使用时,mask成员指出项的属性被取回。这个成员可以是下列值的一个或多个。
  TVIF_CHILDREN cChildren成员是有效的。
  TVIF_DI_SETITEM 树形视控件将保留支持信息并且不重新请求它。当处理TVN_GETDISPINF通知时,这个标记是有效的。
  TVIF_HANDLE hItem成员有效。
  TVIF_IMAGE iImage成员有效。
  TVIF_PARAM lParam成员有效。
  TVIF_SELECTEDIMAGE iSelectedImage成员有效。
  TVIF_STATE state和stateMask成员有效。
  TVIF_TEXT pszText和cchTextMax成员有效。


你可能感兴趣的:(CTreeCtrl控件)