TVINSERTSTRUCT
包含添加新項(xiàng)到樹(shù)形視控件所使用的信息。這個(gè)結(jié)構(gòu)被TVM_INSERTITEM消息使用。這個(gè)結(jié)構(gòu)與TV_INSERTSTRUCT結(jié)構(gòu)是一樣的,但它已經(jīng)按當(dāng)前的命名習(xí)慣重命名了。
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
- 父項(xiàng)的句柄。如果這個(gè)成員的值是TVI_ROOT或NULL,這項(xiàng)將被作為樹(shù)形控件的根插入。
- hInsertAfter
- 插入的新項(xiàng)之后的項(xiàng)的句柄。或是下列值之一:
值 |
意味 |
TVI_FIRST |
在列表的開(kāi)始插入項(xiàng) |
TVI_LAST |
在列表的最后插入項(xiàng) |
TVI_ROOT |
作為一個(gè)根項(xiàng)添加 |
TVI_SORT |
以字母順序插入項(xiàng) |
- itemex
- 版本4.71。TVITEMEX包含關(guān)于項(xiàng)添加的信息。
- item
- TVITEM包含關(guān)于項(xiàng)添加的信息。
需求
Windows NT/2000:需要Windows NT 3.51或更高版本。
Windows 95/98:需要Windows 95或更高版本。
Header:定義在commctrl.h。
TVITEM
指定或接收樹(shù)形視項(xiàng)的屬性。這個(gè)結(jié)構(gòu)與TV_ITEM結(jié)構(gòu)一樣,但它已經(jīng)被當(dāng)前命名協(xié)議重新命名了。新的應(yīng)用程序應(yīng)該使用這個(gè)結(jié)構(gòu)。
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
- 指出其它的結(jié)構(gòu)成員哪些包含有效數(shù)據(jù)的標(biāo)記數(shù)組。當(dāng)這個(gè)結(jié)構(gòu)被TVM_GETITEM消息使用時(shí),mask成員指出項(xiàng)的屬性被取回。這個(gè)成員可以是下列值的一個(gè)或多個(gè)。
TVIF_CHILDREN |
cChildren成員是有效的。 |
TVIF_DI_SETITEM |
樹(shù)形視控件將保留支持信息并且不重新請(qǐng)求它。當(dāng)處理TVN_GETDISPINF通知時(shí),這個(gè)標(biāo)記是有效的。 |
TVIF_HANDLE |
hItem成員有效。 |
TVIF_IMAGE |
iImage成員有效。 |
TVIF_PARAM |
lParam成員有效。 |
TVIF_SELECTEDIMAGE |
iSelectedImage成員有效。 |
TVIF_STATE |
state和stateMask成員有效。 |
TVIF_TEXT |
pszText和cchTextMax成員有效。 |
- hItem
- 這個(gè)函數(shù)引用的項(xiàng)。
- state
- 位標(biāo)記和圖像列表索引的設(shè)置,指出項(xiàng)的狀態(tài)。當(dāng)設(shè)置了一個(gè)項(xiàng)的狀態(tài),stateMask成員指出這個(gè)成員的位是有效的。當(dāng)取加一個(gè)項(xiàng)的狀態(tài)時(shí),這個(gè)成員返回stateMask成員指出的位的當(dāng)前狀態(tài)。
這個(gè)成員的0至7位包含了項(xiàng)的狀態(tài)標(biāo)記。關(guān)于可能的項(xiàng)狀態(tài)標(biāo)記,參見(jiàn)Tree View Control Item States.
覆蓋圖像覆蓋在項(xiàng)的圖標(biāo)圖像之上。這個(gè)成員的8至11位指定了以1為基準(zhǔn)的覆蓋圖像索引。如果這些位是0,這個(gè)項(xiàng)沒(méi)有覆蓋圖像。要隔離這些位,使用TVIS_OVERLAYMASK掩碼。要在這個(gè)成員中設(shè)置覆蓋圖像索引,使用INDEXTOOVERLAYMASK宏。圖像列表的覆蓋圖像是被ImageList_SetOverlayImage函數(shù)設(shè)置的。
一個(gè)狀態(tài)圖像是僅次于指出應(yīng)用程序定義的狀態(tài)的項(xiàng)的圖標(biāo)顯示的。通過(guò)發(fā)送TVM_SETIMAGELIST消息來(lái)指定一個(gè)狀態(tài)圖像列表。要設(shè)置一個(gè)項(xiàng)的狀態(tài)圖像,在TVITEM結(jié)構(gòu)的stateMask成員中包含TVIS_STATEIMAGEMASK值。結(jié)構(gòu)的state成員的12至15位指定狀態(tài)圖像列表中被繪制圖像的索引。
要設(shè)置狀態(tài)圖像索引,使用INDEXTOSTATEIMAGEMASK。這個(gè)宏把一個(gè)索引適當(dāng)?shù)脑O(shè)置到12至15位上。要指出項(xiàng)沒(méi)有狀態(tài)圖像,設(shè)置索引為0。這意味著在狀態(tài)圖像列表中的圖像0不能被作為一個(gè)狀態(tài)圖像使用。要隔離state成員的位12至15,使用TVIS_STATEIMAGEMASK掩碼。
- stateMask
- state成員的位是有效的。如果你取回了一個(gè)項(xiàng)的狀態(tài),設(shè)置stateMask成員的位來(lái)指出state成員中的這個(gè)位被返回。如果你設(shè)置了一個(gè)項(xiàng)的狀態(tài),設(shè)置stateMask成員的位來(lái)指出state成員的這個(gè)位是你想設(shè)置的。要設(shè)置或取回一個(gè)項(xiàng)的覆蓋圖像的索引,設(shè)置TVIS_OVERLAYMASK位。要設(shè)置和取回一個(gè)項(xiàng)的狀態(tài)圖像索引,設(shè)置TVIS_STATEIMAGEMASK位。
- pszText
- 如果這個(gè)結(jié)構(gòu)指定了項(xiàng)屬性,那么這個(gè)成員是指向一個(gè)以空字符結(jié)束的字符串,包含有項(xiàng)的文本。如果這個(gè)成員是值LPSTR_TEXTCALLBACK,那么父窗口為保存名字負(fù)責(zé)。既然這樣,當(dāng)樹(shù)形視控件需要顯示、保存或編輯項(xiàng)文本時(shí),向父窗口發(fā)送TVN_GETDISPINFO通過(guò)消息,當(dāng)項(xiàng)文本改變時(shí),發(fā)送TVN_SETDISPINFO通知消息。
如果結(jié)構(gòu)是取回項(xiàng)的屬性,這個(gè)成員是取回項(xiàng)文本緩沖的地址。
- cchTextMax
- pszText成員指定緩沖的大小,以字符為單位。如果這個(gè)結(jié)構(gòu)被使用來(lái)設(shè)置項(xiàng)屬性,這個(gè)成員被忽略。
- iImage
- 當(dāng)項(xiàng)是在非選擇狀態(tài)中時(shí),是樹(shù)形控件的圖像列表的索引。
如果這個(gè)成員是值I_IMAGECALLBACK,父窗口為保存索引負(fù)責(zé)。既然這樣,當(dāng)樹(shù)形視控件需要顯示這個(gè)圖像時(shí),向父窗口發(fā)送TVN_GETDISPINFO通知消息來(lái)獲得索引。
- iSelectedImage
- 當(dāng)項(xiàng)被選擇時(shí),是樹(shù)形控件圖像列表的索引。
如果這個(gè)成員是值I_IMAGECALLBACK,父窗口為保存索引負(fù)責(zé)。既然這樣,當(dāng)樹(shù)形視控件需要顯示這個(gè)圖像時(shí),向父窗口發(fā)送TVN_GETDISPINFO通知消息來(lái)獲得索引。
- cChildren
- 標(biāo)記指出哪一個(gè)項(xiàng)有關(guān)聯(lián)的子項(xiàng)。這個(gè)成員可以是下列值之一。
zero |
這個(gè)項(xiàng)沒(méi)有子項(xiàng)。 |
one |
這個(gè)項(xiàng)有一個(gè)或更多的子項(xiàng)。 |
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
- 與這項(xiàng)相關(guān)的32位值。
需要
Windows NT/2000:需要Windows NT 3.51或更高版本。
Windows 95/98:需要Windows 95或更高版本。
Header:定義在commctrl.h。
NMTREEVIEW
包含關(guān)于樹(shù)形視通知消息的信息。這個(gè)結(jié)構(gòu)與NM_TREEVIEW結(jié)構(gòu)一樣,但它已經(jīng)用當(dāng)前的命名規(guī)則進(jìn)行了重命名。
typedef struct tagNMTREEVIEW {
NMHDR hdr;
UINT action;
TVITEM itemOld;
TVITEM itemNew;
POINT ptDrag;
} NMTREEVIEW, FAR *LPNMTREEVIEW;
成員
- hdr
- NMHDR結(jié)構(gòu),包含了關(guān)于這個(gè)通知消息的信息
- action
- 通知指定的動(dòng)作標(biāo)記。
- itemOld
- 包含關(guān)于舊項(xiàng)狀態(tài)信息的TVITEM結(jié)構(gòu)。通知消息沒(méi)有使用它時(shí),這個(gè)成員為0。
- itemNew
- 包含關(guān)于新項(xiàng)狀態(tài)信息的TVITEM結(jié)構(gòu)。通知消息沒(méi)有使用它時(shí),這個(gè)成員為0。
- ptDrag
- 包含引起通知消息發(fā)送的事件信息的POINT結(jié)構(gòu)。
參見(jiàn)
WM_NOTIFY