MFC 树型视图三个结构:TVINSERTSTRUCTTVITEMNMTREEVIEW

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 树型视图三个结构:TVINSERTSTRUCTTVITEMNMTREEVIEW相关的知识,希望对你有一定的参考价值。

下面是树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW

TVINSERTSTRUCT

包含添加新项到树形视控件所使用的信息。

这个结构被TVM_INSERTITEM消息使用。这个结构与TV_INSERTSTRUCT结构是一样的,但它已经按当前的命名习惯重命名了。

typedef struct tagTVINSERTSTRUCT 
	HTREEITEM hParent;
	HTREEITEM hInsertAfter;
#if (_WIN32_IE >= 0x0400)
	union
	
		TVITEMEX itemex;
		TVITEM item;
	 DUMMYUNIONNAME;
#else
	TVITEM item;
#endif
 TVINSERTSTRUCT, FAR *LPTVINSERTSTRUCT;

成员

成员含义
hParent父项的句柄。如果这个成员的值是TVI_ROOTNULL,这项将被作为树形控件的根插入。
hInsertAfter插入的新项之后的项的句柄。或是下列值之一:
TVI_FIRST: 在列表的开始插入项
TVI_LAST: 在列表的最后插入项
TVI_ROOT: 作为一个根项添加
TVI_SORT: 以字母顺序插入项
itemex版本4.71。TVITEMEX包含关于项添加的信息。
itemTVITEM包含关于项添加的信息。

TVITEM

指定或接收树形视项的属性。

这个结构与TV_ITEM结构一样,但它已经被当前命名协议重新命名了。新的应用程序应该使用这个结构。

typedef struct tagTVITEM 
	UINT mask;
	HTREEITEM hItem;
	UINT state;
	UINT stateMask;
	LPTSTR pszText;
	int cchTextMax;
	int iImage;
	int iSelectedImage;
	int cChildren;
	LPARAM lParam;
 TVITEM, FAR *LPTVITEM;

成员

  • 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成员有效。

  • hItem
    这个函数引用的项。

  • state
    位标记和图像列表索引的设置,指出项的状态。当设置了一个项的状态,stateMask成员指出这个成员的位是有效的。当取加一个项的状态时,这个成员返回stateMask成员指出的位的当前状态。
    这个成员的0至7位包含了项的状态标记。关于可能的项状态标记,参见Tree View Control Item States.

    覆盖图像覆盖在项的图标图像之上。这个成员的8至11位指定了以1为基准的覆盖图像索引。如果这些位是0,这个项没有覆盖图像。要隔离这些位,使用TVIS_OVERLAYMASK掩码。要在这个成员中设置覆盖图像索引,使用INDEXTOOVERLAYMASK宏。图像列表的覆盖图像是被ImageList_SetOverlayImage函数设置的。

    一个状态图像是仅次于指出应用程序定义的状态的项的图标显示的。通过发送TVM_SETIMAGELIST消息来指定一个状态图像列表。要设置一个项的状态图像,在TVITEM结构的stateMask成员中包含TVIS_STATEIMAGEMASK值。结构的state成员的12至15位指定状态图像列表中被绘制图像的索引。

    要设置状态图像索引,使用INDEXTOSTATEIMAGEMASK。这个宏把一个索引适当的设置到12至15位上。要指出项没有状态图像,设置索引为0。这意味着在状态图像列表中的图像0不能被作为一个状态图像使用。要隔离state成员的位12至15,使用TVIS_STATEIMAGEMASK掩码。

  • stateMask
    state成员的位是有效的。如果你取回了一个项的状态,设置stateMask成员的位来指出state成员中的这个位被返回。如果你设置了一个项的状态,设置stateMask成员的位来指出state成员的这个位是你想设置的。要设置或取回一个项的覆盖图像的索引,设置TVIS_OVERLAYMASK位。要设置和取回一个项的状态图像索引,设置TVIS_STATEIMAGEMASK位。

  • pszText
    如果这个结构指定了项属性,那么这个成员是指向一个以空字符结束的字符串,包含有项的文本。如果这个成员是值LPSTR_TEXTCALLBACK,那么父窗口为保存名字负责。既然这样,当树形视控件需要显示、保存或编辑项文本时,向父窗口发送TVN_GETDISPINFO通过消息,当项文本改变时,发送TVN_SETDISPINFO通知消息。
    如果结构是取回项的属性,这个成员是取回项文本缓冲的地址。

  • cchTextMax

    pszText成员指定缓冲的大小,以字符为单位。如果这个结构被使用来设置项属性,这个成员被忽略。

  • iImage

    当项是在非选择状态中时,是树形控件的图像列表的索引。
    如果这个成员是值I_IMAGECALLBACK,父窗口为保存索引负责。既然这样,当树形视控件需要显示这个图像时,向父窗口发送TVN_GETDISPINFO通知消息来获得索引。

  • iSelectedImage

    当项被选择时,是树形控件图像列表的索引。
    如果这个成员是值I_IMAGECALLBACK,父窗口为保存索引负责。既然这样,当树形视控件需要显示这个图像时,向父窗口发送TVN_GETDISPINFO通知消息来获得索引。

  • cChildren

    标记指出哪一个项有关联的子项。这个成员可以是下列值之一:

    • zero: 这个项没有子项。

    • one: 这个项有一个或更多的子项。

  • lParam
    与这项相关的32位值。

NMTREEVIEW

包含关于树形视通知消息的信息

这个结构与NM_TREEVIEW结构一样,但它已经用当前的命名规则进行了重命名。

typedef struct tagNMTREEVIEW 
	NMHDR hdr;
	UINT action;
	TVITEM itemOld;
	TVITEM itemNew;
	POINT ptDrag;
 NMTREEVIEW, FAR *LPNMTREEVIEW;

成员

成员含义
hdrNMHDR结构,包含了关于这个通知消息的信息
action通知指定的动作标记。
itemOld包含关于旧项状态信息的TVITEM结构。通知消息没有使用它时,这个成员为0。
itemNew包含关于新项状态信息的TVITEM结构。通知消息没有使用它时,这个成员为0。
ptDrag包含引起通知消息发送的事件信息的POINT结构。

以上是关于MFC 树型视图三个结构:TVINSERTSTRUCTTVITEMNMTREEVIEW的主要内容,如果未能解决你的问题,请参考以下文章

MFC体系结构

MFC体系结构

数据结构的三个方面

通用的树型类,可以生成任何树型结构

oracle使用connect by进行级联查询 树型菜单

树型结构