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_ROOT或NULL,這項將被作為樹形控件的根插入。
- hInsertAfter
- 插入的新項之后的項的句柄。或是下列值之一:
值 |
意味 |
TVI_FIRST |
在列表的開始插入項 |
TVI_LAST |
在列表的最后插入項 |
TVI_ROOT |
作為一個根項添加 |
TVI_SORT |
以字母順序插入項 |
- itemex
- 版本4.71。TVITEMEX包含關于項添加的信息。
- item
- TVITEM包含關于項添加的信息。
需求
Windows NT/2000:需要Windows NT 3.51或更高版本。
Windows 95/98:需要Windows 95或更高版本。
Header:定義在commctrl.h。
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 |
這個項有一個或更多的子項。 |
I_CHILDRENCALLBACK |
The parent window keeps track of whether the item has child items. In this case, when the tree view control needs to display the item, the control sends the parent a TVN_GETDISPINFO notification message to determine whether the item has child items.
If the tree view control has the TVS_HASBUTTONS style, it uses this member to determine whether to display the button indicating the presence of child items. You can use this member to force the control to display the button even though the item does not have any child items inserted. This allows you to display the button while minimizing the control's memory usage by inserting child items only when the item is visible or expanded.
|
- lParam
- 與這項相關的32位值。
需要
Windows NT/2000:需要Windows NT 3.51或更高版本。
Windows 95/98:需要Windows 95或更高版本。
Header:定義在commctrl.h。
NMTREEVIEW
包含關于樹形視通知消息的信息。這個結構與NM_TREEVIEW結構一樣,但它已經用當前的命名規則進行了重命名。
typedef struct tagNMTREEVIEW {
NMHDR hdr;
UINT action;
TVITEM itemOld;
TVITEM itemNew;
POINT ptDrag;
} NMTREEVIEW, FAR *LPNMTREEVIEW;
成員
- hdr
- NMHDR結構,包含了關于這個通知消息的信息
- action
- 通知指定的動作標記。
- itemOld
- 包含關于舊項狀態信息的TVITEM結構。通知消息沒有使用它時,這個成員為0。
- itemNew
- 包含關于新項狀態信息的TVITEM結構。通知消息沒有使用它時,這個成員為0。
- ptDrag
- 包含引起通知消息發送的事件信息的POINT結構。
參見
WM_NOTIFY