共用方式為


CTreeCtrl 類別

提供 Windows 通用樹狀檢閱控制項的功能。

語法

class CTreeCtrl : public CWnd

成員

公用建構函式

名稱 描述
CTreeCtrl::CTreeCtrl 建構 CTreeCtrl 物件。

公用方法

名稱 描述
CTreeCtrl::Create 建立樹視圖控件,並將它附加至 CTreeCtrl 物件。
CTreeCtrl::CreateDragImage 為指定的樹視圖專案建立拖曳位圖。
CTreeCtrl::CreateEx 使用指定的 Windows 擴充樣式建立樹狀結構控件,並將它附加至 CTreeCtrl 物件。
CTreeCtrl::DeleteAllItems 刪除樹檢視控件中的所有專案。
CTreeCtrl::DeleteItem 刪除樹檢視控件中的新專案。
CTreeCtrl::EditLabel 就地編輯指定的樹視圖專案。
CTreeCtrl::EndEditLabelNow 取消目前樹檢視控件中樹檢視項目標籤上的編輯作業。
CTreeCtrl::EnsureVisible 確保樹檢視專案在其樹視圖控件中可見。
CTreeCtrl::Expand 展開或折疊指定樹視圖專案的子專案。
CTreeCtrl::GetBkColor 擷取控件的目前背景色彩。
CTreeCtrl::GetCheck 擷取樹狀目錄控制項專案的檢查狀態。
CTreeCtrl::GetChildItem 擷取指定樹視圖專案的子系。
CTreeCtrl::GetCount 擷取與樹視圖控件相關聯的樹狀項目數目。
CTreeCtrl::GetDropHilightItem 擷取拖放作業的目標。
CTreeCtrl::GetEditControl 擷取用來編輯指定樹檢視專案的編輯控件句柄。
CTreeCtrl::GetExtendedStyle 擷取目前樹視圖控件所使用的擴充樣式。
CTreeCtrl::GetFirstVisibleItem 擷取指定樹檢視專案的第一個可見專案。
CTreeCtrl::GetImageList 擷取與樹視圖控件相關聯的影像清單句柄。
CTreeCtrl::GetIndent 從其父系擷取樹視圖專案的位移(以像素為單位)。
CTreeCtrl::GetInsertMarkColor 擷取用來繪製樹檢視插入標記的色彩。
CTreeCtrl::GetItem 擷取指定之樹視圖項目的屬性。
CTreeCtrl::GetItemData 傳回與專案相關聯的應用程式特定值。
CTreeCtrl::GetItemExpandedImageIndex 擷取當目前樹視圖控件的指定專案處於展開狀態時,要顯示的影像索引。
CTreeCtrl::GetItemHeight 擷取樹視圖專案的目前高度。
CTreeCtrl::GetItemImage 擷取與專案相關聯的影像。
CTreeCtrl::GetItemPartRect 擷取目前樹視圖控件中指定專案之指定部分的周框。
CTreeCtrl::GetItemRect 擷取樹視圖專案的周框。
CTreeCtrl::GetItemState 傳回項目的狀態。
CTreeCtrl::GetItemStateEx 擷取目前樹視圖控件中指定專案的擴充狀態。
CTreeCtrl::GetItemText 傳回專案的文字。
CTreeCtrl::GetLastVisibleItem 擷取目前樹視圖控件中最後一個展開的專案。
CTreeCtrl::GetLineColor 擷取樹視圖控件目前的線條色彩。
CTreeCtrl::GetNextItem 擷取符合指定關聯性的下一個樹視圖專案。
CTreeCtrl::GetNextSiblingItem 擷取指定樹視圖專案的下一個同層級。
CTreeCtrl::GetNextVisibleItem 擷取指定樹視圖專案的下一個可見專案。
CTreeCtrl::GetParentItem 擷取指定之樹視圖專案的父代。
CTreeCtrl::GetPrevSiblingItem 擷取指定之樹視圖專案的上一個同層級。
CTreeCtrl::GetPrevVisibleItem 擷取指定之樹視圖專案的上一個可見專案。
CTreeCtrl::GetRootItem 擷取指定樹視圖專案的根目錄。
CTreeCtrl::GetScrollTime 擷取樹視圖控件的最大捲動時間。
CTreeCtrl::GetSelectedCount 擷取目前樹視圖控件中選取的項目數目。
CTreeCtrl::GetSelectedItem 擷取目前選取的樹視圖專案。
CTreeCtrl::GetTextColor 擷取控件的目前文字色彩。
CTreeCtrl::GetToolTips 擷取樹視圖控件所使用的子 ToolTip 控件句柄。
CTreeCtrl::GetVisibleCount 擷取與樹視圖控件相關聯的可見樹項數目。
CTreeCtrl::HitTest 傳回與 對象相關的 CTreeCtrl 數據指標目前位置。
CTreeCtrl::InsertItem 在樹檢視控件中插入新專案。
CTreeCtrl::ItemHasChildren 如果指定的專案具有子專案,則傳回非零。
CTreeCtrl::MapAccIdToItem 將指定的輔助功能識別碼對應至目前樹視圖控件中的樹視圖專案句柄。
CTreeCtrl::MapItemToAccID 將指定的句柄對應至目前樹視圖控件中的樹視圖專案至輔助功能識別碼。
CTreeCtrl::Select 選取、卷動至檢視,或重新繪製指定的樹視圖專案。
CTreeCtrl::SelectDropTarget 將樹狀結構專案重新繪製為拖放作業的目標。
CTreeCtrl::SelectItem 選取指定的樹視圖專案。
CTreeCtrl::SelectSetFirstVisible 選取指定的樹視圖專案做為第一個可見專案。
CTreeCtrl::SetAutoscrollInfo 設定目前樹檢視控件的自動標籤率。
CTreeCtrl::SetBkColor 設定控制件的背景色彩。
CTreeCtrl::SetCheck 設定樹狀目錄控制項專案的檢查狀態。
CTreeCtrl::SetExtendedStyle 設定目前樹視圖控件的延伸樣式。
CTreeCtrl::SetImageList 設定與樹視圖控件相關聯的影像清單句柄。
CTreeCtrl::SetIndent 從其父系設定樹視圖專案的位移(以像素為單位)。
CTreeCtrl::SetInsertMark 設定樹檢視控件中的插入標記。
CTreeCtrl::SetInsertMarkColor 設定用來繪製樹檢視插入標記的色彩。
CTreeCtrl::SetItem 設定指定之樹檢視項目的屬性。
CTreeCtrl::SetItemData 設定與專案相關聯的應用程式特定值。
CTreeCtrl::SetItemExpandedImageIndex 設定當目前樹視圖控件的指定專案處於展開狀態時,要顯示的影像索引。
CTreeCtrl::SetItemHeight 設定樹檢視專案的高度。
CTreeCtrl::SetItemImage 將影像與專案產生關聯。
CTreeCtrl::SetItemState 設定項目的狀態。
CTreeCtrl::SetItemStateEx 設定目前樹視圖控件中指定專案的擴充狀態。
CTreeCtrl::SetItemText 設定項目的文字。
CTreeCtrl::SetLineColor 設定樹檢視控件目前的線條色彩。
CTreeCtrl::SetScrollTime 設定樹檢視控件的最大捲動時間。
CTreeCtrl::SetTextColor 設定控件的文字色彩。
CTreeCtrl::SetToolTips 設定樹檢視控件的子 ToolTip 控件。
CTreeCtrl::ShowInfoTip 顯示目前樹檢視控件中指定專案的資訊提示。
CTreeCtrl::SortChildren 排序指定父項目的子系。
CTreeCtrl::SortChildrenCB 使用應用程式定義的排序函式,排序指定父專案的子系。

備註

「樹檢視控件」是一個視窗,會顯示階層式專案清單,例如檔中的標題、索引中的專案,或磁碟上的檔案和目錄。 每個項目都包含標籤和選擇性點陣圖影像,因此,每個項目都可以擁有與自己相關的子項目清單。 使用者可以按一下項目以展開和摺疊子項目的關聯清單。

此控件(因此類別 CTreeCtrl )僅適用於在 Windows 98 和 Windows NT 第 4 版和更新版本下執行的程式。

如需使用 CTreeCtrl的詳細資訊,請參閱:

繼承階層架構

CObject

CCmdTarget

CWnd

CTreeCtrl

需求

標頭: afxcmn.h

CTreeCtrl::Create

如果您在對話框範本中指定樹狀控制件,或者如果您使用 CTreeView,則會在建立對話框或檢視時自動建立樹狀目錄控制項。

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

參數

dwStyle
指定樹檢視控件的樣式。 套用窗口樣式,如 CreateWindowWindows SDK 中所述,以及樹視圖控件樣式的任何組合

rect
指定樹檢視控件的大小和位置。 它可以是 CRect 對象或 RECT 結構。

pParentWnd
指定樹檢視控制元件的父視窗,通常是 CDialog。 它不得為 NULL

nID
指定樹檢視控件的識別碼。

傳回值

如果初始化成功,則為非零;否則為 0。

備註

如果您想要將樹狀控制項建立為其他視窗的子視窗,請使用 Create 成員函式。 如果您使用 建立樹狀目錄控件 Create,除了其他樹視圖樣式之外,還必須傳遞它 WS_VISIBLE

您會在兩個步驟中建構 CTreeCtrl 。 首先呼叫 建構函式,然後呼叫 Create,這會建立樹視圖控件,並將它附加至 CTreeCtrl 物件。

若要建立具有延伸視窗樣式的樹狀結構控制項,請呼叫 CreateEx 而不是 Create

範例

// Assuming your window has a CTreeCtrl member named m_TreeCtrl,
// you can create the tree control window with a child ID of ID_MYTREE
// using a call like this:

m_TreeCtrl.Create(WS_VISIBLE | WS_TABSTOP | WS_CHILD | WS_BORDER |
                      TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES |
                      TVS_DISABLEDRAGDROP | TVS_NOTOOLTIPS | TVS_EDITLABELS,
                  CRect(10, 10, 300, 100), this, ID_MYTREE);

// The control will have the appropriate window styles, and the tree
// control styles specified are those most commonly used.

CTreeCtrl::CreateEx

呼叫此函式來建立控件(子視窗),並將它與 CTreeCtrl 對象產生關聯。

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

參數

dwExStyle
指定要建立之控件的擴充樣式。 如需擴充 Windows 樣式的清單,請參閱 dwExStyle Windows SDK 中的 參數 CreateWindowEx

dwStyle
指定樹檢視控件的樣式。 套用窗口樣式,如 CreateWindowWindows SDK 中所述,以及樹視圖控件樣式的任何組合

rect
結構的參考 RECT ,描述要建立之視窗的大小和位置,在的用戶端座標中 pParentWnd

pParentWnd
控件父系之視窗的指標。

nID
控制件的子視窗識別碼。

傳回值

如果成功則為非零,否則為 0。

備註

使用 CreateEx 而不是 Create 套用延伸的 Windows 樣式,由 Windows 擴充樣式前置詞 WS_EX_所指定。

CTreeCtrl::CreateDragImage

呼叫此函式,以在樹視圖控件中建立指定專案的拖曳點陣圖、建立位圖的影像清單,並將點陣圖新增至影像清單。

CImageList* CreateDragImage(HTREEITEM hItem);

參數

hItem
要拖曳之樹狀專案的句柄。

傳回值

如果成功,則為已加入拖曳位圖之影像清單的指標;否則 NULL為 。

備註

應用程式會使用影像清單函式,在拖曳項目時顯示影像。

物件 CImageList 是永久性的,而且您必須在完成時將其刪除。 例如:

HTREEITEM hItem = m_TreeCtrl.GetSelectedItem();

CImageList *pImageList = m_TreeCtrl.CreateDragImage(hItem);

// Do something with the image list.

delete pImageList;

CTreeCtrl::CTreeCtrl

建構 CTreeCtrl 物件。

CTreeCtrl();

CTreeCtrl::DeleteAllItems

呼叫此函式以刪除樹視圖控件中的所有專案。

BOOL DeleteAllItems();

傳回值

如果成功則為非零;否則為 0。

範例

// The underlying Windows API always returns TRUE
VERIFY(m_TreeCtrl.DeleteAllItems());

CTreeCtrl::DeleteItem

呼叫此函式以從樹視圖控件中刪除專案。

BOOL DeleteItem(HTREEITEM hItem);

參數

hItem
要刪除之樹狀專案的句柄。 如果 hitem 具有 TVI_ROOT 值,則會從樹視圖控件刪除所有專案。

傳回值

如果成功則為非零;否則為 0。

範例

// Look at all of the root-level items
HTREEITEM hCurrent = m_TreeCtrl.GetChildItem(TVI_ROOT);
while (hCurrent != NULL)
{
   // Get the text for the item. Notice we use TVIF_TEXT because
   // we want to retrieve only the text, but also specify TVIF_HANDLE
   // because we're getting the item by its handle.
   TVITEM item;
   TCHAR szText[1024];
   item.hItem = hCurrent;
   item.mask = TVIF_TEXT | TVIF_HANDLE;
   item.pszText = szText;
   item.cchTextMax = 1024;

   BOOL bWorked = m_TreeCtrl.GetItem(&item);

   // Try to get the next item
   hCurrent = m_TreeCtrl.GetNextItem(hCurrent, TVGN_NEXT);

   // If we successfuly retrieved an item, and the item's text
   // contains a lowercase letter 'e', delete the item.
   if (bWorked && _tcschr(item.pszText, 'e'))
      m_TreeCtrl.DeleteItem(item.hItem);
}

CTreeCtrl::EditLabel

呼叫此函式,開始就地編輯指定的項目文字。

CEdit* EditLabel(HTREEITEM hItem);

參數

hItem
要編輯之樹狀專案的句柄。

傳回值

如果成功,則為用來編輯項目文字之物件的指標 CEdit ,否則 NULL為 。

備註

藉由將專案的文字取代為包含文字的單行編輯控件,即可完成編輯。

範例

// Make sure the focus is set to the tree control.
m_TreeCtrl.SetFocus();

// Show the edit control on the label of the selected item.
// The tree control must have the TVS_EDITLABELS style set.
HTREEITEM hSel = m_TreeCtrl.GetSelectedItem();
CEdit *pmyEdit = m_TreeCtrl.EditLabel(hSel);
ASSERT(pmyEdit != NULL);

CTreeCtrl::EndEditLabelNow

結束目前樹檢視控件中樹檢視專案的標籤上的編輯作業。

BOOL EndEditLabelNow(BOOL fCancelWithoutSave);

參數

fCancelWithoutSave
[in] TRUE 表示在結束編輯作業之前捨棄樹視圖項目的變更,或在 FALSE 結束作業之前儲存樹視圖項目的變更。

傳回值

TRUE 如果此方法成功,則為 ;否則為 FALSE

備註

這個方法會傳送 TVM_ENDEDITLABELNOW 訊息,如 Windows SDK 中所述。

CTreeCtrl::EnsureVisible

呼叫此函式,以確保樹視圖項目可見。

BOOL EnsureVisible(HTREEITEM hItem);

參數

hItem
要顯示之樹狀專案的句柄。

傳回值

TRUE如果系統捲動樹檢視控制元件中的專案,以確保指定的項目可見,則傳回 。 否則,傳回值為 FALSE

備註

如有必要,函式會展開父專案或捲動樹視圖控件,讓項目可見。

範例

HTREEITEM hItem = m_TreeCtrl.GetSelectedItem();
// hmyItem is the item that I want to ensure is visible.
HTREEITEM hmyItem = m_TreeCtrl.GetChildItem(hItem);

// Expand the parent, if possible.
HTREEITEM hParent = m_TreeCtrl.GetParentItem(hmyItem);
if (hParent != NULL)
   m_TreeCtrl.Expand(hParent, TVE_EXPAND);

// Ensure the item is visible.
m_TreeCtrl.EnsureVisible(hmyItem);

CTreeCtrl::Expand

呼叫此函式,以展開或折疊與指定父專案相關聯的子項目清單。

BOOL Expand(
    HTREEITEM hItem,
    UINT nCode);

參數

hItem
正在展開之樹狀專案的句柄。

nCode
旗標,表示要採取的動作類型。 此旗標可以有下列其中一個值:

  • TVE_COLLAPSE 折疊清單。

  • TVE_COLLAPSERESET 折疊清單並移除子專案。 狀態 TVIS_EXPANDEDONCE 旗標已重設。 此旗標必須與旗標搭配 TVE_COLLAPSE 使用。

  • TVE_EXPAND 展開清單。

  • TVE_TOGGLE 如果清單目前已展開,則折疊清單,如果清單目前已折疊,則會將其展開。

傳回值

如果成功則為非零;否則為 0。

範例

請參閱 CTreeCtrl::EnsureVisible 的範例。

CTreeCtrl::GetBkColor

此成員函式會實作 Win32 訊息 TVM_GETBKCOLOR 的行為,如 Windows SDK 中所述。

COLORREF GetBkColor() const;

傳回值

COLORREF值,表示控制件的目前視窗背景色彩。 如果此值為 -1,控制件會使用系統視窗色彩。 在此情況下,您可以使用 ::GetSysColor(COLOR_WINDOW) 來取得控制項所使用的目前系統色彩。

範例

請參閱 CTreeCtrl::SetTextColor 的範例。

CTreeCtrl::GetCheck

呼叫此成員函式以擷取專案的檢查狀態。

BOOL GetCheck(HTREEITEM hItem) const;

參數

hItem
HTREEITEM要接收狀態資訊的 。

傳回值

如果已檢查樹狀結構控件專案,則為非零;否則為 0。

範例

請參閱 CTreeCtrl::SetCheck 的範例。

CTreeCtrl::GetChildItem

呼叫此函式,以擷取樹視圖專案,該專案是 所 hItem指定專案的子系。

HTREEITEM GetChildItem(HTREEITEM hItem) const;

參數

hItem
樹狀專案的句柄。

傳回值

如果成功,則為子專案的句柄;否則 NULL為 。

範例

HTREEITEM hmyItem = m_TreeCtrl.GetSelectedItem();

// Delete all of the children of hmyItem.
if (m_TreeCtrl.ItemHasChildren(hmyItem))
{
   HTREEITEM hNextItem;
   HTREEITEM hChildItem = m_TreeCtrl.GetChildItem(hmyItem);

   while (hChildItem != NULL)
   {
      hNextItem = m_TreeCtrl.GetNextItem(hChildItem, TVGN_NEXT);
      m_TreeCtrl.DeleteItem(hChildItem);
      hChildItem = hNextItem;
   }
}

CTreeCtrl::GetCount

呼叫此函式以擷取樹視圖控件中的項目計數。

UINT GetCount() const;

傳回值

樹視圖控件中的項目數目。

範例

// Delete all of the items from the tree control.
m_TreeCtrl.DeleteAllItems();
ASSERT(m_TreeCtrl.GetCount() == 0);

CTreeCtrl::GetDropHilightItem

呼叫此函式以擷取拖放作業的目標專案。

HTREEITEM GetDropHilightItem() const;

傳回值

如果成功,則卸除專案的句柄;否則 NULL為 。

範例

// Set the item at the point myPoint as the drop target.
UINT uFlags;
HTREEITEM hItem = m_TreeCtrl.HitTest(myPoint, &uFlags);

if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
   m_TreeCtrl.SelectDropTarget(hItem);
   ASSERT(m_TreeCtrl.GetDropHilightItem() == hItem);
}

CTreeCtrl::GetEditControl

呼叫此函式,擷取用來編輯樹視圖專案文字的編輯控件句柄。

CEdit* GetEditControl() const;

傳回值

如果成功,則為編輯控件的指標,用來編輯項目文字;否則 NULL為 。

範例

// The string replacing the text in the edit control.
LPCTSTR lpszmyString = _T("New text!");

// Replace the text in the label edit control, if possible.
CEdit *pEdit = m_TreeCtrl.GetEditControl();

if (pEdit != NULL)
{
   pEdit->SetWindowText(lpszmyString);
}

CTreeCtrl::GetExtendedStyle

擷取目前樹視圖控件所使用的擴充樣式。

DWORD GetExtendedStyle() const;

傳回值

值,包含目前樹視圖控件擴充樣式的位組合 (OR)。 如需詳細資訊,請參閱 樹視圖控件擴充樣式

備註

這個方法會傳送 TVM_GETEXTENDEDSTYLE 訊息,如 Windows SDK 中所述。

CTreeCtrl::GetFirstVisibleItem

呼叫此函式,以擷取樹視圖控件的第一個可見專案。

HTREEITEM GetFirstVisibleItem() const;

傳回值

第一個可見專案的句柄;否則 NULL為 。

範例

請參閱 CTreeCtrl::SetCheck 的範例。

CTreeCtrl::GetImageList

呼叫此函式,以擷取與樹視圖控件相關聯的一般或狀態影像清單句柄。

CImageList* GetImageList(UINT nImageList) const;

參數

nImageList
要擷取的影像清單類型。 映射清單可以是下列其中一個值:

  • TVSIL_NORMAL 擷取一般影像清單,其中包含樹視圖項目的選取和未選取的影像。

  • TVSIL_STATE 擷取狀態影像清單,其中包含處於使用者定義狀態之樹視圖專案的影像。

傳回值

如果成功,則為控件影像清單的指標;否則 NULL為 。

備註

樹視圖控件中的每個專案都可以有一對與其相關聯的位圖影像。 選取專案時會顯示一個影像,另一個影像則會在未選取項目時顯示。 例如,專案可能會在選取時顯示開啟的資料夾,而未選取時會顯示關閉的資料夾。

如需影像清單的詳細資訊,請參閱 類別 CImageList

範例

ASSERT(m_TreeCtrl.GetImageList(TVSIL_NORMAL) == NULL);

m_TreeCtrl.SetImageList(&m_TreeImages, TVSIL_NORMAL);
ASSERT(m_TreeCtrl.GetImageList(TVSIL_NORMAL) == &m_TreeImages);

CTreeCtrl::GetIndent

呼叫此函式,以像素為單位擷取子專案相對於其父項目縮排的數量。

UINT GetIndent() const;

傳回值

以像素為單位的縮排量。

範例

// Double the indent.
UINT uIndent = m_TreeCtrl.GetIndent();
m_TreeCtrl.SetIndent(2 * uIndent);

CTreeCtrl::GetInsertMarkColor

此成員函式會實作 Win32 訊息 TVM_GETINSERTMARKCOLOR 的行為,如 Windows SDK 中所述。

COLORREF GetInsertMarkColor() const;

傳回值

COLORREF值,包含目前的插入標記色彩。

範例

// Use the highliight color for the insert mark color.
COLORREF crColor = ::GetSysColor(COLOR_HIGHLIGHT);
m_TreeCtrl.SetInsertMarkColor(crColor);
ASSERT(m_TreeCtrl.GetInsertMarkColor() == crColor);

CTreeCtrl::GetItem

呼叫此函式以擷取指定樹視圖項目的屬性。

BOOL GetItem(TVITEM* pItem) const;

參數

pItem
結構的指標 TVITEM ,如 Windows SDK 中所述。

傳回值

如果成功則為非零;否則為 0。

範例

請參閱 CTreeCtrl::DeleteItem 的範例。

CTreeCtrl::GetItemData

呼叫此函式,以擷取與指定專案相關聯的應用程式特定值。

DWORD_PTR GetItemData(HTREEITEM hItem) const;

參數

hItem
要擷取其數據的專案句柄。

傳回值

與所 hItem指定專案相關聯的指標大小應用程式特定值。

範例

HTREEITEM hmyItem = m_TreeCtrl.GetSelectedItem();

// Delete all of the children of hmyItem whose item data is
// not equal to zero.
if (m_TreeCtrl.ItemHasChildren(hmyItem))
{
   HTREEITEM hNextItem;
   HTREEITEM hChildItem = m_TreeCtrl.GetChildItem(hmyItem);

   while (hChildItem != NULL)
   {
      hNextItem = m_TreeCtrl.GetNextItem(hChildItem, TVGN_NEXT);

      if (m_TreeCtrl.GetItemData(hChildItem) != 0)
      {
         m_TreeCtrl.DeleteItem(hChildItem);
      }

      hChildItem = hNextItem;
   }
}

CTreeCtrl::GetItemExpandedImageIndex

擷取當目前樹視圖控件的指定專案處於展開狀態時,要顯示的影像索引。

int GetItemExpandedImageIndex(HTREEITEM hItem)const;

參數

hItem
[in]樹視圖控件專案的句柄。

傳回值

當指定的項目處於展開狀態時所要顯示的影像索引。

備註

這個方法會傳送 TVM_GETITEM 訊息,如 Windows SDK 中所述。 該訊息會傳 TVITEMEX 回描述樹視圖控件項目的結構,然後這個方法會從該結構擷取 iExpandedImage 成員。

CTreeCtrl::GetItemHeight

此成員函式會實作 Win32 訊息 TVM_GETITEMHEIGHT 的行為,如 Windows SDK 中所述。

SHORT GetItemHeight() const;

傳回值

專案的高度,以像素為單位。

範例

// Double the height of the items.
SHORT sHeight = m_TreeCtrl.GetItemHeight();
m_TreeCtrl.SetItemHeight(2 * sHeight);

CTreeCtrl::GetItemImage

樹視圖控件中的每個專案都可以有一對與其相關聯的位圖影像。

BOOL GetItemImage(
    HTREEITEM hItem,
    int& nImage,
    int& nSelectedImage) const;

參數

hItem
要擷取其影像之專案的句柄。

nImage
整數,會在樹視圖控件的影像清單中接收專案影像的索引。

nSelectedImage
整數,會在樹視圖控件的影像清單中接收專案所選取影像的索引。

傳回值

如果成功則為非零;否則為 0。

備註

影像會出現在專案標籤的左側。 選取專案時會顯示一個影像,另一個影像則會在未選取項目時顯示。 例如,專案可能會在選取時顯示開啟的資料夾,而未選取時會顯示關閉的資料夾。

呼叫此函式,以擷取專案影像的索引,以及在樹視圖控件的影像清單中擷取其選取的影像。

範例

HTREEITEM hmyItem = m_TreeCtrl.GetSelectedItem();

// If the selected image is the same as the nonselected image
// then make the selected image one more than the nonselected image.
if (m_TreeCtrl.ItemHasChildren(hmyItem))
{
   HTREEITEM hItem = m_TreeCtrl.GetChildItem(hmyItem);
   int nImage, nSelectedImage;

   while (hItem != NULL)
   {
      m_TreeCtrl.GetItemImage(hItem, nImage, nSelectedImage);

      if (nImage == nSelectedImage)
      {
         m_TreeCtrl.SetItemImage(hItem, nImage, nImage + 1);
      }

      hItem = m_TreeCtrl.GetNextSiblingItem(hItem);
   }
}

CTreeCtrl::GetItemPartRect

擷取目前樹視圖控件中指定專案之指定部分的周框。

BOOL GetItemPartRect(
    HTREEITEM hItem,
    int nPart,
    LPRECT lpRect)const;

參數

hItem
[in]樹視圖控件專案的句柄。

nPart
[in]元件的標識碼。 必須設定為 TVGIPR_BUTTON

lpRect
[out]結構的 RECT 指標。 如果這個方法成功,結構會接收 和 nParthItem指定元件的矩形座標。

傳回值

TRUE 如果此方法成功,則為 ;否則為 FALSE

備註

每個樹狀結構控件專案都會由圖形矩形系結。 只要按兩下該矩形中的某個點,專案就會被 叫用。 這個方法會傳回最大的矩形,如此一來,當單擊矩形中的某個點時,就會叫用 參數所 hItem 識別的專案。

這個方法會傳送 TVM_GETITEMPARTRECT 訊息,如 Windows SDK 中所述。 如需詳細資訊,請參閱 TreeView_GetItemPartRect 巨集。

範例

第一個程式代碼範例會定義用來存取目前樹檢視控件的變數 m_treeCtrl。 程式代碼範例也會定義不帶正負號的整數和數個 HTREEITEM 變數。 下一個範例會使用這些變數。

public:
// Variable to access tree control.
CTreeCtrl m_treeCtrl;
// Variable to access splitbutton control.
CSplitButton m_splitbutton;
// Accessibility identifier
UINT accIdUS;
// HTREEITEMs
HTREEITEM hCountry;
HTREEITEM hPA;
HTREEITEM hWA;

下一個程式代碼範例會使用輔助功能標識碼和 CTreeCtrl::MapAccIdToItem 方法來擷取根樹檢視專案的句柄。 然後,此範例會使用句柄和 CTreeCtrl::GetItemPartRect 方法來繪製該專案周圍的 3D 矩形。 在未顯示的程式代碼範例的先前區段中,我們建立了一個樹視圖,其中包含 美國 的根國家/地區節點、賓夕法尼亞州和華盛頓州的子節點,以及這些州城市樹狀專案。 我們使用 CTreeCtrl::MapItemToAccID 方法將根樹視圖專案與輔助功能標識碼產生關聯。

CRect rect;
HTREEITEM hUS = m_treeCtrl.MapAccIdToItem(accIdUS);
m_treeCtrl.GetItemPartRect(hUS, TVGIPR_BUTTON, &rect);
m_treeCtrl.GetDC()->Draw3dRect(&rect, RGB(255, 0, 0), RGB(0, 0, 255));

CTreeCtrl::GetItemRect

呼叫此函式以擷 取 hItem 的周框,並判斷它是否可見。

BOOL GetItemRect(
    HTREEITEM hItem,
    LPRECT lpRect,
    BOOL bTextOnly) const;

參數

hItem
樹視圖控件專案的句柄。

lpRect
RECT接收周框之結構的指標。 座標相對於樹視圖控件的左上角。

bTextOnly
如果此參數為非零值,周框只會包含項目的文字。 否則,它會包含專案在樹視圖控件中佔用的整行。

傳回值

如果項目可見,則為非零,且周框包含在 中 lpRect。 否則,使用未初始化的 lpRect 0。

範例

HTREEITEM hmyItem = m_TreeCtrl.GetSelectedItem();

// Dump the bounds of hmyItem.
if (hmyItem != NULL)
{
   RECT r;

   m_TreeCtrl.GetItemRect(hmyItem, &r, FALSE);

   TRACE(TEXT("left = %d, top = %d, right = %d, bottom = %d\r\n"),
         r.left,
         r.top,
         r.right,
         r.bottom);
}

CTreeCtrl::GetItemState

傳回 所 hItem指定項目的狀態。

UINT GetItemState(
    HTREEITEM hItem,
    UINT nStateMask) const;

參數

hItem
要擷取其狀態的專案句柄。

nStateMask
表示要擷取之一或多個狀態的遮罩。 如需 有關 之可能值nStateMask的詳細資訊,請參閱 Windows SDK 中 結構的 和 stateMask 成員TVITEM的討論state

傳回值

UINT,保留所nStateMask指定值的C++位OR運算元 (|) 。 如需可能值的資訊,請參閱 CTreeCtrl::GetItem。 若要尋找特定狀態的值,請執行C++位 AND 運算符 (&) f 狀態值和傳回值,如下列範例所示。

範例

// Show all of the visible items in bold.
HTREEITEM hItem = m_TreeCtrl.GetFirstVisibleItem();

while (hItem != NULL)
{
   m_TreeCtrl.SetItemState(hItem, TVIS_BOLD, TVIS_BOLD);
   ASSERT(TVIS_BOLD & m_TreeCtrl.GetItemState(hItem, TVIS_BOLD));
   hItem = m_TreeCtrl.GetNextVisibleItem(hItem);
}

CTreeCtrl::GetItemStateEx

擷取目前樹視圖控件中指定專案的擴充狀態。

UINT GetItemStateEx(HTREEITEM hItem) const;

參數

hItem
[in]樹視圖控件專案的句柄。

傳回值

項目的擴充狀態。 如需詳細資訊,請參閱 uStateEx 結構的成員 TVITEMEX

備註

這個方法會傳送 TVM_GETITEM 訊息,如 Windows SDK 中所述。 該訊息會傳 TVITEMEX 回描述樹視圖控件項目的結構,而這個方法會 uStateEx 從該結構擷取成員。

CTreeCtrl::GetItemText

傳回 所 hItem指定項目的文字。

CString GetItemText(HTREEITEM hItem) const;

參數

hItem
要擷取其文字的專案句柄。

傳回值

CString物件,包含項目的文字。

範例

請參閱 CTreeCtrl::GetNextItem 的範例。

CTreeCtrl::GetLastVisibleItem

擷取目前樹視圖控件中最後一個未展開的節點專案。

HTREEITEM GetLastVisibleItem() const;

傳回值

如果方法成功,則為最後一個未展開之節點專案的句柄;否則為 NULL

備註

這個方法會傳送 TVM_GETNEXTITEM 訊息,如 Windows SDK 中所述。 如需詳細資訊,請參閱 TVGN_LASTVISIBLE 該訊息參數中的 flag 旗標。

範例

第一個程式代碼範例會定義用來存取目前樹檢視控件的變數 m_treeCtrl。 程式代碼範例也會定義不帶正負號的整數和數個 HTREEITEM 變數。 下一個範例會使用其中一或多個變數。

public:
// Variable to access tree control.
CTreeCtrl m_treeCtrl;
// Variable to access splitbutton control.
CSplitButton m_splitbutton;
// Accessibility identifier
UINT accIdUS;
// HTREEITEMs
HTREEITEM hCountry;
HTREEITEM hPA;
HTREEITEM hWA;

下一個程式代碼範例會擷取最後一個未展開之樹視圖節點專案的句柄,然後繪製該專案周圍的 3D 矩形。 在未顯示的程式代碼範例的先前區段中,我們建立了一個樹視圖,其中包含 美國 的根國家/地區節點、賓夕法尼亞州和華盛頓州的子節點,以及這些州城市樹狀專案。

CRect rect;
HTREEITEM hLast = m_treeCtrl.GetLastVisibleItem();
m_treeCtrl.GetItemPartRect(hLast, TVGIPR_BUTTON, &rect);
m_treeCtrl.GetDC()->Draw3dRect(&rect, RGB(255, 0, 0), RGB(0, 0, 255));

CTreeCtrl::GetLineColor

此成員函式會實作 Win32 訊息 TVM_GETLINECOLOR 的行為,如 Windows SDK 中所述。

COLORREF GetLineColor() const;

傳回值

目前的線條色彩。

範例

COLORREF cr = m_TreeCtrl.GetLineColor();

CTreeCtrl::GetNextItem

呼叫此函式,將具有指定關聯性的樹檢視專案擷 nCode 取至 hItem

HTREEITEM GetNextItem(
    HTREEITEM hItem,
    UINT nCode) const;

參數

hItem
樹狀專案的句柄。

nCode
旗標,表示與的 hItem關聯類型。 此旗標可以是下列其中一個值:

  • TVGN_CARET 擷取目前選取的專案。

  • TVGN_CHILD 擷取 參數所 hItem 指定專案的第一個子專案。

  • TVGN_DROPHILITE 擷取拖放作業的目標專案。

  • TVGN_FIRSTVISIBLE 擷取第一個可見專案。

  • TVGN_LASTVISIBLE 擷取樹狀結構中最後一個展開的專案。 這不會擷取樹檢視視窗中顯示的最後一個專案。

  • TVGN_NEXT 擷取下一個同層級專案。

  • TVGN_NEXTVISIBLE 擷取指定專案後面的下一個可見專案。

  • TVGN_PARENT 擷取指定專案的父代。

  • TVGN_PREVIOUS 擷取上一個同層級專案。

  • TVGN_PREVIOUSVISIBLE 擷取指定專案前面的第一個可見專案。

  • TVGN_ROOT 擷取指定項目所屬根專案的第一個子專案。

傳回值

如果成功,則為下一個專案的句柄;否則 NULL為 。

備註

如果所擷取的項目是樹狀結構的根節點,則此函式會傳回 NULL 。 例如,如果您在樹檢視根節點的第一層子節點上搭配 TVGN_PARENT 旗標使用此訊息,訊息會傳回 NULL

範例

如需在迴圈中使用 的 GetNextItem 範例,請參閱 CTreeCtrl::DeleteItem

// find the currently selected item
HTREEITEM hCurSel = m_TreeCtrl.GetNextItem(TVI_ROOT, TVGN_CARET);

// report it to the user
if (hCurSel == NULL)
{
   AfxMessageBox(_T("There is no selected item"));
}
else
{
   CString str;
   str.Format(_T("The currently selected item is \"%s\""),
              (LPCTSTR)m_TreeCtrl.GetItemText(hCurSel));
   AfxMessageBox((LPCTSTR)str);
}

CTreeCtrl::GetNextSiblingItem

呼叫此函式以擷取的下一個同層級 hItem

HTREEITEM GetNextSiblingItem(HTREEITEM hItem) const;

參數

hItem
樹狀專案的句柄。

傳回值

下一個同層級專案的句柄;否則 NULL為 。

範例

HTREEITEM hmyItem = m_TreeCtrl.GetSelectedItem();

// Show all of the children of hmyItem in bold.
if (m_TreeCtrl.ItemHasChildren(hmyItem))
{
   HTREEITEM hItem = m_TreeCtrl.GetChildItem(hmyItem);

   while (hItem != NULL)
   {
      m_TreeCtrl.SetItemState(hItem, TVIS_BOLD, TVIS_BOLD);
      hItem = m_TreeCtrl.GetNextSiblingItem(hItem);
   }
}

CTreeCtrl::GetNextVisibleItem

呼叫此函式以擷取的下一個可見專案 hItem

HTREEITEM GetNextVisibleItem(HTREEITEM hItem) const;

參數

hItem
樹狀專案的句柄。

傳回值

下一個可見專案的句柄;否則 NULL為 。

範例

請參閱 CTreeCtrl::SetCheck 的範例。

CTreeCtrl::GetParentItem

呼叫此函式以擷取的父代 hItem

HTREEITEM GetParentItem(HTREEITEM hItem) const;

參數

hItem
樹狀專案的句柄。

傳回值

父專案的句柄;否則 NULL為 。

備註

如果指定專案的父系是樹狀結構的根節點,則此函式會傳回 NULL

範例

請參閱 CTreeCtrl::EnsureVisible 的範例。

CTreeCtrl::GetPrevSiblingItem

呼叫此函式以擷取 先前的 hItem同層級。

HTREEITEM GetPrevSiblingItem(HTREEITEM hItem) const;

參數

hItem
樹狀專案的句柄。

傳回值

上一個同層級的句柄;否則 NULL為 。

範例

HTREEITEM hmyItem = m_TreeCtrl.GetSelectedItem();

// Show all of the previous siblings of hmyItem in bold.
HTREEITEM hItem = hmyItem;

while (hItem != NULL)
{
   m_TreeCtrl.SetItemState(hItem, TVIS_BOLD, TVIS_BOLD);
   hItem = m_TreeCtrl.GetPrevSiblingItem(hItem);
}

CTreeCtrl::GetPrevVisibleItem

呼叫此函式以擷取 先前的可見專案 hItem

HTREEITEM GetPrevVisibleItem(HTREEITEM hItem) const;

參數

hItem
樹狀專案的句柄。

傳回值

上一個可見專案的句柄;否則 NULL為 。

範例

HTREEITEM hmyItem = m_TreeCtrl.GetSelectedItem();

// Show all of the previous visible items of hmyItem in bold.
HTREEITEM hItem = hmyItem;

while (hItem != NULL)
{
   m_TreeCtrl.SetItemState(hItem, TVIS_BOLD, TVIS_BOLD);
   hItem = m_TreeCtrl.GetPrevVisibleItem(hItem);
}

CTreeCtrl::GetRootItem

呼叫此函式以擷取樹視圖控件的根專案。

HTREEITEM GetRootItem() const;

傳回值

根專案的句柄;否則 NULL為 。

範例

請參閱 CTreeCtrl::EditLabel 的範例。

CTreeCtrl::GetScrollTime

呼叫這個成員函式,以擷取樹視圖控件的最大捲動時間。

UINT GetScrollTime() const;

傳回值

滾動時間上限,以毫秒為單位。

備註

此成員函式會實作 Win32 訊息 TVM_GETSCROLLTIME 的行為,如 Windows SDK 中所述。

CTreeCtrl::GetSelectedCount

擷取目前樹視圖控件中選取的項目數目。

UINT GetSelectedCount();

傳回值

選取的項目數目。

備註

這個方法會傳送 TVM_GETSELECTEDCOUNT 訊息,如 Windows SDK 中所述。

CTreeCtrl::GetSelectedItem

呼叫此函式以擷取樹視圖控件目前選取的專案。

HTREEITEM GetSelectedItem() const;

傳回值

選取專案的句柄;否則 NULL為 。

範例

// Expand the selected item and make it visible, if possible.
HTREEITEM hItem = m_TreeCtrl.GetSelectedItem();

if ((hItem != NULL) && m_TreeCtrl.ItemHasChildren(hItem))
{
   m_TreeCtrl.Expand(hItem, TVE_EXPAND);
   m_TreeCtrl.EnsureVisible(hItem);
}

CTreeCtrl::GetTextColor

此成員函式會實作 Win32 訊息 TVM_GETTEXTCOLOR 的行為,如 Windows SDK 中所述。

COLORREF GetTextColor() const;

傳回值

COLORREF值,表示目前的文字色彩。 如果此值為 -1,控制件會使用文字色彩的系統色彩。

範例

請參閱 CTreeCtrl::SetTextColor 的範例。

CTreeCtrl::GetToolTips

此成員函式會實作 Win32 訊息 TVM_GETTOOLTIPS 的行為,如 Windows SDK 中所述。

CToolTipCtrl* GetToolTips() const;

傳回值

樹狀目錄控件所要使用的物件指標 CToolTipCtrlCreate如果成員函式使用 樣式TVS_NOTOOLTIPS,則不會使用任何工具提示,而且NULL會傳回 。

備註

GetToolTips MFC 實作會 CToolTipCtrl 傳回 樹狀控件所使用的 物件,而不是工具提示控件的句柄。

範例

// If the tree control does not have a tooltips control,
// then use m_ToolTips as the tooltips for the tree control.
if (m_TreeCtrl.GetToolTips() == NULL)
{
   m_TreeCtrl.SetToolTips(&m_ToolTips);
}

CTreeCtrl::GetVisibleCount

呼叫此函式以擷取樹視圖控件中可見專案的計數。

UINT GetVisibleCount() const;

傳回值

樹檢視控件中可見項目的數目;否則 - 1。

範例

請參閱 CTreeCtrl::SetCheck 的範例。

CTreeCtrl::HitTest

呼叫此函式,以判斷相對於樹視圖控件工作區的指定點位置。

HTREEITEM HitTest(
    CPoint pt,
    UINT* pFlags = NULL) const;

HTREEITEM HitTest(TVHITTESTINFO* pHitTestInfo) const;

參數

pt
要測試之點的用戶端座標。

pFlags
接收點擊測試結果相關信息之整數的指標。 它可以是一節中成員底下 flags 所列的一或多個值。

pHitTestInfo
TVHITTESTINFO結構位址,其中包含點擊測試的位置,以及接收點擊測試結果的相關信息。

傳回值

佔用指定點的樹視圖專案句柄, NULL 如果沒有專案佔用該點,則為 。

備註

呼叫此函式時, pt 參數會指定要測試之點的座標。 函式會在指定的點傳 NULL 回專案的句柄,如果沒有專案佔用該點,則傳回 。 此外, pFlags 參數會包含值,指出指定點的位置。 可能的值包括:

Description
TVHT_ABOVE 在工作區上方。
TVHT_BELOW 工作區下方。
TVHT_NOWHERE 在工作區中,但位於最後一個專案下方。
TVHT_ONITEM 在與專案相關聯的點陣圖或標籤上。
TVHT_ONITEMBUTTON 在與專案相關聯的按鈕上。
TVHT_ONITEMICON 在與專案相關聯的點陣圖上。
TVHT_ONITEMINDENT 在與專案相關聯的縮排中。
TVHT_ONITEMLABEL 在與專案相關聯的標籤 (string) 上。
TVHT_ONITEMRIGHT 在專案右邊的區域。
TVHT_ONITEMSTATEICON 在處於使用者定義狀態之樹檢視專案的狀態圖示上。
TVHT_TOLEFT 工作區左側。
TVHT_TORIGHT 工作區右側。

範例

// Select the item that is at the point myPoint.
UINT uFlags;
HTREEITEM hItem = m_TreeCtrl.HitTest(myPoint, &uFlags);

if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
   m_TreeCtrl.SelectItem(hItem);
}

CTreeCtrl::InsertItem

呼叫此函式,以在樹視圖控件中插入新專案。

HTREEITEM InsertItem(LPTVINSERTSTRUCT lpInsertStruct);

HTREEITEM InsertItem(
    UINT nMask,
    LPCTSTR lpszItem,
    int nImage,
    int nSelectedImage,
    UINT nState,
    UINT nStateMask,
    LPARAM lParam,
    HTREEITEM hParent,
    HTREEITEM hInsertAfter);

HTREEITEM InsertItem(
    LPCTSTR lpszItem,
    HTREEITEM hParent = TVI_ROOT,
    HTREEITEM hInsertAfter = TVI_LAST);

HTREEITEM InsertItem(
    LPCTSTR lpszItem,
    int nImage,
    int nSelectedImage,
    HTREEITEM hParent = TVI_ROOT,
    HTREEITEM hInsertAfter = TVI_LAST);

參數

lpInsertStruct
的指標 TVINSERTSTRUCT ,指定要插入之樹視圖項目的屬性。

nMask
整數,指定要設定的屬性。 TVITEM請參閱 Windows SDK 中的結構。

lpszItem
包含項目文字的字串位址。

nImage
樹視圖控件影像清單中的專案影像索引。

nSelectedImage
樹視圖控件影像清單中的項目選取影像的索引。

nState
指定項目狀態的值。 如需適當的狀態清單,請參閱 Windows SDK 中的樹視圖控件項目狀態。

nStateMask
指定要設定的狀態。 TVITEM請參閱 Windows SDK 中的結構。

lParam
與專案相關聯的指標大小應用程式特定值。

hParent
插入專案的父代句柄。

hInsertAfter
要插入新專案的專案句柄。

傳回值

如果成功,則為新專案的句柄;否則 NULL為 。

備註

此範例顯示插入樹狀目錄控制項專案時,您可能想要使用函式的每個版本的情況。

範例

// Insert a root item using the structure. We must
// initialize a TVINSERTSTRUCT structure and pass its
// address to the call. 

TVINSERTSTRUCT tvInsert;
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = _T("United States");

HTREEITEM hCountry = m_TreeCtrl.InsertItem(&tvInsert);

// Insert subitems of that root. Pennsylvania is
// a state in the United States, so its item will be a child
// of the United States item. We won't set any image or states,
// so we supply only the TVIF_TEXT mask flag. This
// override provides nearly complete control over the
// insertion operation without the tedium of initializing
// a structure. If you're going to add lots of items
// to a tree, you might prefer the structure override
// as it affords you a performance win by allowing you
// to initialize some fields of the structure only once,
// outside of your insertion loop.

HTREEITEM hPA = m_TreeCtrl.InsertItem(TVIF_TEXT,
   _T("Pennsylvania"), 0, 0, 0, 0, 0, hCountry, NULL);

// Insert the "Washington" item and assure that it is
// inserted after the "Pennsylvania" item. This override is 
// more appropriate for conveniently inserting items with 
// images.

HTREEITEM hWA = m_TreeCtrl.InsertItem(_T("Washington"),
   0, 0, hCountry, hPA);

// We'll add some cities under each of the states.
// The override used here is most appropriate
// for inserting text-only items.

m_TreeCtrl.InsertItem(_T("Pittsburgh"), hPA, TVI_SORT);
m_TreeCtrl.InsertItem(_T("Harrisburg"), hPA, TVI_SORT);
m_TreeCtrl.InsertItem(_T("Altoona"), hPA, TVI_SORT);

m_TreeCtrl.InsertItem(_T("Seattle"), hWA, TVI_SORT);
m_TreeCtrl.InsertItem(_T("Kalaloch"), hWA, TVI_SORT);
m_TreeCtrl.InsertItem(_T("Yakima"), hWA, TVI_SORT);

CTreeCtrl::ItemHasChildren

使用此函式來判斷 所 hItem 指定的樹狀專案是否具有子專案。

BOOL ItemHasChildren(HTREEITEM hItem) const;

參數

hItem
樹狀專案的句柄。

傳回值

如果 所 hItem 指定的樹狀專案具有子專案,則為非零;如果沒有,則為 0。

備註

如果是,您可以使用 CTreeCtrl::GetChildItem 來擷取這些子專案。

範例

請參閱 CTreeCtrl::GetSelectedItem 的範例。

CTreeCtrl::MapAccIdToItem

將指定的輔助功能識別碼對應至目前樹視圖控件中樹視圖專案的句柄。

HTREEITEM MapAccIdToItem(UINT uAccId) const;

參數

uAccId
[in]樹視圖專案中項目的輔助功能標識碼。

傳回值

對應至 參數之uAccId樹視圖專案的句柄。HTREEITEM 如需詳細資訊,請參閱 hItem 結構的成員 TVITEMEX

備註

輔助功能輔助功能是協助殘障人士使用計算機的應用程式。 介面會使用 IAccessible 輔助功能識別碼來唯一指定視窗中的專案。 如需 API 的詳細資訊 IAccessible ,請參閱 Microsoft Active Accessibility

這個方法會傳送 TVM_MAPACCIDTOHTREEITEM 訊息,如 Windows SDK 中所述。

範例

第一個程式代碼範例會定義用來存取目前樹檢視控件的變數 m_treeCtrl。 程式代碼範例也會定義不帶正負號的整數和數個 HTREEITEM 變數。 下一個範例會使用這些變數。

public:
// Variable to access tree control.
CTreeCtrl m_treeCtrl;
// Variable to access splitbutton control.
CSplitButton m_splitbutton;
// Accessibility identifier
UINT accIdUS;
// HTREEITEMs
HTREEITEM hCountry;
HTREEITEM hPA;
HTREEITEM hWA;

下一個程式代碼範例會使用輔助功能標識碼和 CTreeCtrl::MapAccIdToItem 方法來擷取根樹檢視專案的句柄。 此範例會使用句柄和 CTreeCtrl::GetItemPartRect 方法,在該專案周圍繪製 3D 矩形。 在未顯示的程式代碼範例的先前區段中,我們建立了一個樹視圖,其中包含 美國 的根國家/地區節點、賓夕法尼亞州和華盛頓州的子節點,以及這些州城市樹狀專案。 我們使用 CTreeCtrl::MapItemToAccID 方法將根樹視圖專案與輔助功能標識碼產生關聯。

CRect rect;
HTREEITEM hUS = m_treeCtrl.MapAccIdToItem(accIdUS);
m_treeCtrl.GetItemPartRect(hUS, TVGIPR_BUTTON, &rect);
m_treeCtrl.GetDC()->Draw3dRect(&rect, RGB(255, 0, 0), RGB(0, 0, 255));

CTreeCtrl::MapItemToAccID

將目前樹檢視控件中樹檢視專案的指定句柄對應至輔助功能識別碼。

UINT MapItemToAccID(HTREEITEM hItem) const;

參數

hItem
[in]控件中樹視圖專案的句柄。 如需詳細資訊,請參閱 hItem 結構的成員 TVITEMEX

傳回值

對應至 hItem 參數的輔助功能識別碼。

備註

輔助功能輔助功能是協助殘障人士使用計算機的應用程式。 介面會使用 IAccessible 輔助功能識別碼來唯一指定視窗中的專案。 如需 API 的詳細資訊 IAccessible ,請參閱 Microsoft Active Accessibility

這個方法會傳送 TVM_MAPHTREEITEMTOACCID 訊息,如 Windows SDK 中所述。

範例

第一個程式代碼範例會定義用來存取目前樹檢視控件的變數 m_treeCtrl。 程式代碼範例也會定義不帶正負號的整數和數個 HTREEITEM 變數。 下一個範例會使用這些變數。

public:
// Variable to access tree control.
CTreeCtrl m_treeCtrl;
// Variable to access splitbutton control.
CSplitButton m_splitbutton;
// Accessibility identifier
UINT accIdUS;
// HTREEITEMs
HTREEITEM hCountry;
HTREEITEM hPA;
HTREEITEM hWA;

下一個程式代碼範例會取得樹視圖控件專案的標識碼。 在程式代碼範例的先前區段中,我們建立了一個樹視圖,其中包含 美國 的根國家/地區節點、賓夕法尼亞州和華盛頓州的子節點,以及這些州城市樹狀專案。 此程式代碼範例會取得根國家/地區節點的唯一標識符。

// Map an accessibility identifier to the Pennsylvania node.
accIdUS = m_treeCtrl.MapItemToAccId(hCountry);

CTreeCtrl::Select

呼叫此函式以選取指定的樹視圖專案、將專案捲動到檢視中,或重新繪製用來指出拖放作業目標的樣式中的專案。

BOOL Select(
    HTREEITEM hItem,
    UINT nCode);

參數

hItem
樹狀專案的句柄。

nCode
要採取的動作類型。 這個參數可以是下列其中一個 值:

  • TVGN_CARET 將選取範圍設定為指定的專案。

  • TVGN_DROPHILITE 在樣式中重新繪製指定專案,以指出拖放作業的目標。

  • TVGN_FIRSTVISIBLE 垂直捲動樹檢視,使指定的專案是第一個可見的專案。

傳回值

如果成功則為非零;否則為 0。

備註

如果 nCode 包含 值 TVGN_CARET,則父視窗會收到 TVN_SELCHANGINGTVN_SELCHANGED 通知訊息。 此外,如果指定的專案是折迭父專案的子專案,則會展開父項的子專案清單以顯示指定的專案。 在此情況下,父視窗會收到 TVN_ITEMEXPANDINGTVN_ITEMEXPANDED 通知訊息。

範例

請參閱 CTreeCtrl::HitTest 的範例。

CTreeCtrl::SelectDropTarget

呼叫此函式,以重新繪製樣式中的專案,以指出拖放作業的目標。

BOOL SelectDropTarget(HTREEITEM hItem);

參數

hItem
樹狀專案的句柄。

傳回值

如果成功則為非零;否則為 0。

範例

// Set the item at the point myPoint as the drop target.
UINT uFlags;
HTREEITEM hItem = m_TreeCtrl.HitTest(myPoint, &uFlags);

if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
   m_TreeCtrl.SelectDropTarget(hItem);
   ASSERT(m_TreeCtrl.GetDropHilightItem() == hItem);
}

CTreeCtrl::SelectItem

呼叫此函式以選取指定的樹檢視專案。

BOOL SelectItem(HTREEITEM hItem);

參數

hItem
樹狀專案的句柄。

傳回值

如果成功則為非零;否則為 0。

備註

如果 hItemNULL,則此函式不會選取任何專案。

範例

// Select the item that is at the point myPoint.
UINT uFlags;
HTREEITEM hItem = m_TreeCtrl.HitTest(myPoint, &uFlags);

if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
   m_TreeCtrl.SelectItem(hItem);
}

CTreeCtrl::SelectSetFirstVisible

呼叫此函式以垂直捲動樹檢視,讓指定的專案是第一個可見的專案。

BOOL SelectSetFirstVisible(HTREEITEM hItem);

參數

hItem
要設定為第一個可見專案的樹狀專案句柄。

傳回值

如果成功則為非零;否則為 0。

備註

函式會使用 TVM_SELECTITEMTVGN_FIRSTVISIBLE 訊息參數,將訊息傳送至視窗。

範例

// Select the item at the point myPoint as the first visible item.
UINT uFlags;
HTREEITEM hItem = m_TreeCtrl.HitTest(myPoint, &uFlags);

if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
   m_TreeCtrl.SelectSetFirstVisible(hItem);
}

CTreeCtrl::SetAutoscrollInfo

設定目前樹檢視控件的自動標籤率。

BOOL SetAutoscrollInfo(
    UINT uPixelsPerSec,
    UINT uUpdateTime);

參數

uPixelsPerSec
[in]要捲動的每秒像素數。

uUpdateTime
[in]控件更新之間的時間間隔。

傳回值

一律傳回 TRUE

備註

autoscroll 參數可用來捲動至目前看不到的專案。 樹視圖控件必須具有TVS_EX_AUTOHSCROLL延伸樣式,如樹視圖控件擴充樣式中所述

這個方法會傳送 TVM_SETAUTOSCROLLINFO 訊息,如 Windows SDK 中所述。

範例

第一個程式代碼範例會定義用來存取目前樹檢視控件的變數 m_treeCtrl。 程式代碼範例也會定義不帶正負號的整數和數個 HTREEITEM 變數。 下一個範例會使用這些變數。

public:
// Variable to access tree control.
CTreeCtrl m_treeCtrl;
// Variable to access splitbutton control.
CSplitButton m_splitbutton;
// Accessibility identifier
UINT accIdUS;
// HTREEITEMs
HTREEITEM hCountry;
HTREEITEM hPA;
HTREEITEM hWA;

下一個程式代碼範例會設定目前樹視圖控件的自動捲動行為。 在未顯示的程式代碼範例的上一節中,我們建立了一個樹視圖,其中包含 美國 的根國家/地區節點、賓夕法尼亞州和華盛頓州的子節點,以及這些州城市樹狀專案。 我們刻意將樹視圖控件縮小,使其必須自動捲動以顯示具有焦點的樹狀結構專案。 程式代碼範例會將樹視圖控件設定為每隔 5 秒自動捲動 30 圖元,直到樹狀目錄專案處於檢視中為止。

// Scroll 30 pixels/sec and redraw every 5 seconds.
m_treeCtrl.SetAutoscrollInfo(30, 5);

CTreeCtrl::SetBkColor

此成員函式會實作 Win32 訊息 TVM_SETBKCOLOR 的行為,如 Windows SDK 中所述。

COLORREF SetBkColor(COLORREF clr);

參數

clr
COLORREF值,包含新的背景色彩。 如果此值為 -1,控件會還原為使用背景色彩的系統色彩。

傳回值

COLORREF值,表示目前的文字色彩。 如果此值為 -1,控制件會使用文字色彩的系統色彩。

範例

請參閱 CTreeCtrl::SetTextColor 的範例。

CTreeCtrl::SetCheck

呼叫這個成員函式來設定樹狀控件專案的檢查狀態。

BOOL SetCheck(
    HTREEITEM hItem,
    BOOL fCheck = TRUE);

參數

hItem
HTREEITEM要接收檢查狀態變更的 。

fCheck
指出要檢查或取消核取樹狀目錄控件專案。 根據預設, SetCheck 設定要檢查的專案。

傳回值

如果成功則為非零;否則為 0。

備註

核取樹狀目錄控制項專案時(fCheck 設定為 TRUE),專案會出現相鄰的複選標記。

範例

UINT uCount = m_TreeCtrl.GetVisibleCount();
HTREEITEM hItem = m_TreeCtrl.GetFirstVisibleItem();

// Toggle the check state of all the visible items.
for (UINT i = 0; i < uCount; i++)
{
   ASSERT(hItem != NULL);
   m_TreeCtrl.SetCheck(hItem, !m_TreeCtrl.GetCheck(hItem));
   hItem = m_TreeCtrl.GetNextVisibleItem(hItem);
}

若要使用複選框,請在填入樹狀目錄控件之前設定 TVS_CHECKBOXES

m_TreeCtrl.ModifyStyle(0, TVS_CHECKBOXES);

HTREEITEM aItem = m_TreeCtrl.InsertItem(_T("AAA"));
m_TreeCtrl.SetCheck(aItem);

CTreeCtrl::SetExtendedStyle

設定目前樹視圖控件的延伸樣式。

DWORD SetExtendedStyle(
    DWORD dwExMask,
    DWORD dwExStyles);

參數

dwExMask
[in]位掩碼,指定目前樹視圖控件中哪些樣式會受到這個方法的影響。 如果此參數為零,則會忽略此參數,並將參數的值 dwExStyles 指派給樹視圖控件。 指定樹檢視控件擴充樣式中所述之樣式的零或位組合(OR)。

dwExStyles
[in]位掩碼,指定要設定或清除目前樹視圖控件中的樣式。 若要設定樣式的組合,請指定樹視圖控件擴充樣式中所述 的位組合 (OR) 樣式。 若要清除一組樣式,請指定零。

傳回值

值,包含先前的擴充控件樣式。

備註

這個方法會清除 參數中指定的 dwExMask 樣式,然後設定 參數中指定的 dwExStyles 樣式。 只有對應至變更中 dwExMask 位的擴充樣式。

這個方法會傳送 TVM_SETEXTENDEDSTYLE 訊息,如 Windows SDK 中所述。

範例

第一個程式代碼範例會定義用來存取目前樹檢視控件的變數 m_treeCtrl。 程式代碼範例也會定義不帶正負號的整數和數個 HTREEITEM 變數。 下一個範例會使用這些變數。

public:
// Variable to access tree control.
CTreeCtrl m_treeCtrl;
// Variable to access splitbutton control.
CSplitButton m_splitbutton;
// Accessibility identifier
UINT accIdUS;
// HTREEITEMs
HTREEITEM hCountry;
HTREEITEM hPA;
HTREEITEM hWA;

下一個程式代碼範例會將 TVS_EX_AUTOHSCROLL 擴充樣式新增至目前的樹視圖控件。 在未顯示的程式代碼範例的上一節中,我們建立了一個樹視圖,其中包含 美國 的根國家/地區節點、賓夕法尼亞州和華盛頓州的子節點,以及這些州城市樹狀專案。 我們刻意將樹視圖控件縮小,使其必須自動捲動以顯示具有焦點的樹狀結構專案。

m_treeCtrl.SetExtendedStyle(TVS_EX_AUTOHSCROLL, TVS_EX_AUTOHSCROLL);

CTreeCtrl::SetImageList

呼叫此函式來設定樹視圖控件的一般或狀態影像清單,並使用新的影像重新繪製控件。

CImageList* SetImageList(
    CImageList* pImageList,
    int nImageListType);

參數

pImageList
要指派之影像清單的指標。 如果 pImageListNULL,則會從樹視圖控件中移除所有影像。

nImageListType
要設定的影像清單類型。 映射清單可以是下列其中一個值:

  • TVSIL_NORMAL 設定一般影像清單,其中包含樹視圖項目的選取和未選取的影像。 您必須將此狀態用於重疊影像。

  • TVSIL_STATE 設定狀態影像清單,其中包含處於使用者定義狀態之樹視圖專案的影像。

傳回值

如果有任何,則為上一個影像清單的指標;否則 NULL為 。

範例

請參閱 CTreeCtrl::GetImageList 的範例。

CTreeCtrl::SetIndent

呼叫此函式來設定樹視圖控件的縮排寬度,並重新繪製控件以反映新的寬度。

void SetIndent(UINT nIndent);

參數

nIndent
縮排的寬度,以像素為單位。 如果 nIndent 小於系統定義的最小寬度,新的寬度會設定為系統定義的最小值。

範例

請參閱 CTreeCtrl::GetIndent 的範例。

CTreeCtrl::SetInsertMark

此成員函式會實作 Win32 訊息 TVM_SETINSERTMARK 的行為,如 Windows SDK 中所述。

BOOL SetInsertMark(
    HTREEITEM hItem,
    BOOL fAfter = TRUE);

參數

hItem
HTREEITEM ,指定要放置插入標記的專案。 如果這個自變數為 NULL,則會移除插入標記。

fAfter
BOOL 值,指定插入標記是否放在指定專案之前或之後。 如果這個自變數為非零,插入標記將會放在項目之後。 如果這個自變數為零,插入標記會放在專案之前。

傳回值

如果成功則為非零;否則為 0。

範例

// Set the insert mark to be before the item at the point myPoint.
UINT uFlags;
HTREEITEM hItem = m_TreeCtrl.HitTest(myPoint, &uFlags);

if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
   m_TreeCtrl.SetInsertMark(hItem, FALSE);
}

CTreeCtrl::SetInsertMarkColor

此成員函式會實作 Win32 訊息 TVM_SETINSERTMARKCOLOR 的行為,如 Windows SDK 中所述。

COLORREF SetInsertMarkColor(COLORREF clrNew);

參數

clrNew
COLORREF值,包含新的插入標記色彩。

傳回值

COLORREF值,包含先前的插入標記色彩。

範例

請參閱 CTreeCtrl::GetInsertMarkColor 的範例。

CTreeCtrl::SetItem

呼叫此函式以設定指定之樹檢視項目的屬性。

BOOL SetItem(TVITEM* pItem);

BOOL SetItem(
    HTREEITEM hItem,
    UINT nMask,
    LPCTSTR lpszItem,
    int nImage,
    int nSelectedImage,
    UINT nState,
    UINT nStateMask,
    LPARAM lParam);

參數

pItem
結構指標 TVITEM ,其中包含新的項目屬性,如 Windows SDK 中所述。

hItem
要設定其屬性的專案句柄。 hItem請參閱 Windows SDK 中 結構的成員TVITEM

nMask
整數,指定要設定的屬性。 mask請參閱 結構的成員TVITEM

lpszItem
包含項目文字的字串位址。

nImage
樹視圖控件影像清單中的專案影像索引。 iImage請參閱 結構的成員TVITEM

nSelectedImage
樹視圖控件影像清單中的項目選取影像的索引。 iSelectedImage請參閱 結構的成員TVITEM

nState
指定項目狀態的值。 State請參閱 結構的成員TVITEM

nStateMask
指定要設定的狀態。 stateMask請參閱 結構的成員TVITEM

lParam
與專案相關聯的指標大小應用程式特定值。

傳回值

如果成功則為非零;否則為 0。

備註

在結構中TVITEMhItem,成員會識別專案,而mask成員會指定要設定的屬性。

mask如果成員或參數指定TVIF_TEXT值,則pszText成員或 nMask lpszItem 是 Null 終止字串的位址,而且cchTextMax會忽略成員。 如果 mask (或 nMask) 指定 TVIF_STATE 值,則 stateMask 成員或 nStateMask 參數會指定要變更的項目狀態,而 state 成員或 nState 參數包含這些狀態的值。

範例

// Show the item at the point myPoint in bold.
UINT uFlags;
HTREEITEM hItem = m_TreeCtrl.HitTest(myPoint, &uFlags);

if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
   m_TreeCtrl.SetItem(hItem, TVIF_STATE, NULL, 0, 0, TVIS_BOLD,
                      TVIS_BOLD, 0);
}

CTreeCtrl::SetItemData

呼叫此函式,以設定與指定專案相關聯的應用程式特定值。

BOOL SetItemData(
    HTREEITEM hItem,
    DWORD_PTR dwData);

參數

hItem
要擷取其數據的專案句柄。

dwData
與所 hItem指定專案相關聯的指標大小應用程式特定值。

傳回值

如果成功則為非零;否則為 0。

範例

CString str;
HTREEITEM hItem;

// Insert 20 items into the tree control making every item's
// data be the handle of the item.
for (int i = 0; i < 20; i++)
{
   str.Format(TEXT("item %d"), i);
   hItem = m_TreeCtrl.InsertItem(str);

   if (hItem != NULL)
   {
      m_TreeCtrl.SetItemData(hItem, (DWORD_PTR)hItem);
   }
}

CTreeCtrl::SetItemExpandedImageIndex

設定當目前樹視圖控件的指定專案處於展開狀態時,要顯示的影像索引。

BOOL SetItemExpandedImageIndex(
    HTREEITEM hItem,
    int iExpandedImage);

參數

hItem
[in]樹視圖控件專案的句柄。

iExpandedImage
[in]當指定的項目處於展開狀態時所要顯示的影像索引。

傳回值

TRUE 如果此方法成功,則為 ;否則為 FALSE

備註

這個方法會傳送 TVM_SETITEM 訊息,如 Windows SDK 中所述。 這個方法會將 iExpandedImage 參數指派給 iExpandedImage 結構的成員 TVITEMEX ,然後在訊息中使用該結構。

範例

第一個程式代碼範例會定義用來存取目前樹檢視控件的變數 m_treeCtrl。 程式代碼範例也會定義不帶正負號的整數和數個 HTREEITEM 變數。 下一個範例會使用這些變數。

public:
// Variable to access tree control.
CTreeCtrl m_treeCtrl;
// Variable to access splitbutton control.
CSplitButton m_splitbutton;
// Accessibility identifier
UINT accIdUS;
// HTREEITEMs
HTREEITEM hCountry;
HTREEITEM hPA;
HTREEITEM hWA;

下一個程式代碼範例是一項簡單的測試,可判斷方法是否 CTreeCtrl::GetItemExpandedImageIndex 傳回 方法所 CTreeCtrl::SetItemExpandedImageIndex 設定的值。 在程式代碼範例的先前區段中,我們建立了一個樹視圖,其中包含 美國 的根國家/地區節點、賓夕法尼亞州和華盛頓州的子節點,以及這些州城市樹狀專案。

CString str;
CString msg = _T("The set and retrieved item expanded image ")
              _T("indexes are%s equal.");
int nSetItem = 0;
m_treeCtrl.SetItemExpandedImageIndex(hCountry, nSetItem);
int nItem = m_treeCtrl.GetItemExpandedImageIndex(hCountry);
if (nItem == nSetItem)
   str.Format(msg, _T(""));
else
   str.Format(msg, _T(" not"));
AfxMessageBox(str, MB_ICONINFORMATION);

CTreeCtrl::SetItemHeight

此成員函式會實作 Win32 訊息 TVM_SETITEMHEIGHT 的行為,如 Windows SDK 中所述。

SHORT SetItemHeight(SHORT cyHeight);

參數

cyHeight
指定樹檢視中每個專案的新高度,以像素為單位。 如果這個自變數小於影像的高度,則會將它設定為影像的高度。 如果這個自變數不是偶數,則會將它四捨五入為最接近的偶數值。 如果這個自變數是 -1,控制項會使用預設專案高度還原為 。

傳回值

專案先前的高度,以像素為單位。

範例

請參閱 CTreeCtrl::GetItemHeight 的範例。

CTreeCtrl::SetItemImage

將影像與專案產生關聯。

BOOL SetItemImage(
    HTREEITEM hItem,
    int nImage,
    int nSelectedImage);

參數

hItem
要設定其影像的專案句柄。

nImage
樹視圖控件影像清單中的專案影像索引。

nSelectedImage
樹視圖控件影像清單中的項目選取影像的索引。

傳回值

如果成功則為非零;否則為 0。

備註

樹視圖控件中的每個專案都可以有一對與其相關聯的位圖影像。 影像會出現在專案標籤的左側。 選取專案時會顯示一個影像,另一個影像則會在未選取項目時顯示。 例如,專案可能會在選取時顯示開啟的資料夾,而未選取時會顯示關閉的資料夾。

呼叫此函式,以在樹視圖控件的影像清單中設定專案的影像及其選取影像的索引。

如需影像的詳細資訊,請參閱 CImageList

範例

請參閱 CTreeCtrl::GetItemImage 的範例。

CTreeCtrl::SetItemState

設定所 hItem指定項目的狀態。

BOOL SetItemState(
    HTREEITEM hItem,
    UINT nState,
    UINT nStateMask);

參數

hItem
要設定其狀態的專案句柄。

nState
指定專案的新狀態。

nStateMask
指定要變更的狀態。

傳回值

如果成功則為非零;否則為 0。

備註

如需狀態的資訊,請參閱 CTreeCtrl::GetItem

範例

請參閱 CTreeCtrl::GetItemState 的範例。

CTreeCtrl::SetItemStateEx

設定目前樹視圖控件中指定專案的擴充狀態。

BOOL SetItemStateEx(
    HTREEITEM hItem,
    UINT uStateEx);

參數

hItem
[in]樹視圖控件專案的句柄。

uStateEx
[in]項目的擴充狀態。 如需詳細資訊,請參閱 uStateEx 結構的成員 TVITEMEX

傳回值

TRUE 如果此方法成功,則為 ;否則為 FALSE

備註

這個方法會傳送 TVM_SETITEM 訊息,如 Windows SDK 中所述。 這個方法會將 uStateEx 參數指派給 uStateEx 結構的成員 TVITEMEX ,然後在訊息中使用該結構。

範例

第一個程式代碼範例會定義用來存取目前樹檢視控件的變數 m_treeCtrl。 程式代碼範例也會定義不帶正負號的整數和數個 HTREEITEM 變數。 下一個範例會使用這些變數。

public:
// Variable to access tree control.
CTreeCtrl m_treeCtrl;
// Variable to access splitbutton control.
CSplitButton m_splitbutton;
// Accessibility identifier
UINT accIdUS;
// HTREEITEMs
HTREEITEM hCountry;
HTREEITEM hPA;
HTREEITEM hWA;

下一個程式代碼範例會將樹視圖項目設定為停用狀態。 在程式代碼範例的稍早區段中,我們建立了一個樹視圖,其中包含 美國的根國家/地區節點、賓夕法尼亞州和華盛頓州的子節點,以及這些州城市樹狀專案。 此程式代碼範例會將賓夕法尼亞州節點設定為停用狀態。

// Disable the Pennsylvania node.
m_treeCtrl.SetItemStateEx(hPA, TVIS_EX_DISABLED);

CTreeCtrl::SetItemText

設定所 hItem指定項目的文字。

BOOL SetItemText(
    HTREEITEM hItem,
    LPCTSTR lpszItem);

參數

hItem
要設定其文字的專案句柄。

lpszItem
包含專案新文字的字串位址

傳回值

如果成功則為非零;否則為 0。

範例

// Clear the text of the item at point myPoint.
UINT uFlags;
HTREEITEM hItem = m_TreeCtrl.HitTest(myPoint, &uFlags);

if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
   m_TreeCtrl.SetItemText(hItem, NULL);
}

CTreeCtrl::SetLineColor

呼叫這個成員函式,以設定樹視圖控件目前的線條色彩。

COLORREF SetLineColor(COLORREF clrNew = CLR_DEFAULT);

參數

clrNew
新的線條色彩。

傳回值

上一行色彩。

備註

此成員函式會實作 Win32 訊息 TVM_SETLINECOLOR 的行為,如 Windows SDK 中所述。

範例

COLORREF clrPrev = m_TreeCtrl.SetLineColor(RGB(255, 0, 0));

CTreeCtrl::SetScrollTime

呼叫這個成員函式,以設定樹視圖控件的最大捲動時間。

UINT SetScrollTime(UINT uScrollTime);

參數

uScrollTime
新的最大捲動時間,以毫秒為單位。 如果此值小於 100,則會四捨五入為 100。

傳回值

先前的捲動時間上限,以毫秒為單位。

備註

此成員函式會實作 Win32 訊息 TVM_SETSCROLLTIME 的行為,如 Windows SDK 中所述。

CTreeCtrl::SetTextColor

此成員函式會實作 Win32 訊息 TVM_SETTEXTCOLOR 的行為,如 Windows SDK 中所述。

COLORREF SetTextColor(COLORREF clr);

參數

clr
COLORREF值,包含新的文字色彩。 如果這個自變數是 -1,控制件會還原為使用文字色彩的系統色彩。

傳回值

COLORREF值,表示先前的文字色彩。 如果此值為 -1,控件會針對文字色彩使用系統色彩。

範例

// change text color to white and background to dark blue
m_TreeCtrl.SetTextColor(RGB(255, 255, 255));
ASSERT(m_TreeCtrl.GetTextColor() == RGB(255, 255, 255));
m_TreeCtrl.SetBkColor(RGB(0, 0, 128));
ASSERT(m_TreeCtrl.GetBkColor() == RGB(0, 0, 128));

// force repaint immediately
m_TreeCtrl.Invalidate();

CTreeCtrl::SetToolTips

此成員函式會實作 Win32 訊息 TVM_SETTOOLTIPS 的行為,如 Windows SDK 中所述。

CToolTipCtrl* SetToolTips(CToolTipCtrl* pWndTip);

參數

pWndTip
樹狀目錄控制件將使用之物件的指標 CToolTipCtrl

傳回值

物件的指標 CToolTipCtrl ,包含控件先前使用的工具提示,或 NULL 先前未使用任何工具提示。

備註

若要使用工具提示,請在 TVS_NOTOOLTIPS 建立 CTreeCtrl 物件時指出樣式。

範例

請參閱 CTreeCtrl::GetToolTips 的範例。

CTreeCtrl::ShowInfoTip

顯示目前樹檢視控件中指定專案的資訊提示。

void ShowInfoTip(HTREEITEM hItem);

參數

hItem
[in]控件中樹視圖專案的句柄。 如需詳細資訊,請參閱 hItem 結構的成員 TVITEMEX

備註

如需工具提示與資訊提示之間差異的詳細資訊,請參閱 工具提示和資訊提示

這個方法會傳送 TVM_SHOWINFOTIP 訊息,如 Windows SDK 中所述。

CTreeCtrl::SortChildren

呼叫此函式,以依字母順序排序樹視圖控件中指定父專案的子專案。

BOOL SortChildren(HTREEITEM hItem);

參數

hItem
要排序其子專案之父專案的句柄。 如果 hItemNULL,則排序會從樹狀結構的根目錄繼續。

傳回值

如果成功則為非零;否則為 0。

備註

SortChildren 不會透過樹狀結構遞歸;只會排序的 hItem 直接子系。

範例

// Sort all of the items in the tree control.
m_TreeCtrl.SortChildren(TVI_ROOT);

CTreeCtrl::SortChildrenCB

呼叫此函式,以使用比較專案的應用程式定義回呼函式來排序樹檢視專案。

BOOL SortChildrenCB(LPTVSORTCB pSort);

參數

pSort
TVSORTCB 結構的指標。

傳回值

如果成功則為非零;否則為 0。

備註

如果第一個專案應位於第二個專案之前,則結構比較函 lpfnCompare式必須傳回負值、如果第一個項目應該遵循第二個專案,則傳回正值,如果兩個專案相等,則傳回零。

lParam1lParam2 參數會對應至lParam所比較之兩個專案之 TVITEM 結構的成員。 參數 lParamSort 會對應至 lParam 結構的成員 TV_SORTCB

範例

// Sort the item in reverse alphabetical order.
int CALLBACK MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
   // lParamSort contains a pointer to the tree control.
   // The lParam of an item is just its handle, 
   // as specified with SetItemData
   CTreeCtrl* pmyTreeCtrl = (CTreeCtrl*)lParamSort;
   CString strItem1 = pmyTreeCtrl->GetItemText((HTREEITEM)lParam1);
   CString strItem2 = pmyTreeCtrl->GetItemText((HTREEITEM)lParam2);

   return strItem2.Compare(strItem1);
}

 

TVSORTCB tvs;

// Sort the tree control's items using my
// callback procedure.
tvs.hParent = TVI_ROOT;
tvs.lpfnCompare = MyCompareProc;
tvs.lParam = (LPARAM)&m_TreeCtrl;

m_TreeCtrl.SortChildrenCB(&tvs);

另請參閱

MFC 範例 CMNCTRL1
CWnd
階層架構圖表
CImageList