MFC - 樹控制元件
樹形檢視控制元件是一個顯示專案分層列表的視窗,例如文件中的標題、索引中的條目或磁碟上的檔案和目錄。每個專案都包含一個標籤和一個可選的點陣圖影像,並且每個專案都可以有一系列與其關聯的子專案。透過單擊某個專案,使用者可以展開和摺疊關聯的子專案列表。它由CTreeCtrl類表示。
序號 |
名稱及描述 |
1 |
Create 建立一個樹形檢視控制元件並將其附加到 CTreeCtrl 物件。 |
2 |
CreateDragImage 為指定的樹形檢視專案建立一個拖動點陣圖。 |
3 |
CreateEx 使用指定的 Windows 擴充套件樣式建立一個樹形控制元件並將其附加到 CTreeCtrl 物件 |
4 |
DeleteAllItems 刪除樹形檢視控制元件中的所有專案。 |
5 |
DeleteItem 刪除樹形檢視控制元件中的一個新專案。 |
6 |
EditLabel 就地編輯指定的樹形檢視專案。 |
7 |
EndEditLabelNow 取消當前樹形檢視控制元件中樹形檢視專案標籤上的編輯操作。 |
8 |
EnsureVisible 確保樹形檢視專案在其樹形檢視控制元件中可見。 |
9 |
Expand 展開或摺疊指定樹形檢視專案的子專案。 |
10 |
GetBkColor 檢索控制元件的當前背景顏色。 |
11 |
GetCheck 檢索樹形控制元件專案的選中狀態。 |
12 |
GetChildItem 檢索指定樹形檢視專案的子項。 |
13 |
GetCount 檢索與樹形檢視控制元件關聯的樹形專案的數量。 |
14 |
GetDropHilightItem 檢索拖放操作的目標。 |
15 |
GetEditControl 檢索用於編輯指定樹形檢視專案的編輯控制元件的控制代碼。 |
16 |
GetExtendedStyle 檢索當前樹形檢視控制元件正在使用的擴充套件樣式。 |
17 |
GetFirstVisibleItem 檢索指定樹形檢視專案的第一個可見專案。 |
18 |
GetImageList 檢索與樹形檢視控制元件關聯的影像列表的控制代碼。 |
19 |
GetIndent 檢索樹形檢視專案與其父項的偏移量(以畫素為單位)。 |
20 |
GetInsertMarkColor 檢索用於繪製樹形檢視插入標記的顏色。 |
21 |
GetItem 檢索指定樹形檢視專案的屬性。 |
22 |
GetItemData 返回與專案關聯的 32 位應用程式特定值。 |
23 |
GetItemExpandedImageIndex 檢索在當前樹形檢視控制元件的指定專案處於展開狀態時要顯示的影像的索引。 |
24 |
GetItemHeight 檢索樹形檢視專案的當前高度。 |
25 |
GetItemImage 檢索與專案關聯的影像。 |
26 |
GetItemPartRect 檢索當前樹形檢視控制元件中指定專案的指定部分的邊界矩形。 |
27 |
GetItemRect 檢索樹形檢視專案的邊界矩形。 |
28 |
GetItemState 返回專案的狀體。 |
29 |
GetItemStateEx 檢索當前樹形檢視控制元件中指定專案的擴充套件狀態。 |
30 |
GetItemText 返回專案的文字。 |
31 |
GetLastVisibleItem 檢索當前樹形檢視控制元件中最後一個展開的專案。 |
32 |
GetLineColor 檢索樹形檢視控制元件的當前線條顏色。 |
33 |
GetNextItem 檢索與指定關係匹配的下一個樹形檢視專案。 |
34 |
GetNextSiblingItem 檢索指定樹形檢視專案的下一個同級專案。 |
35 |
GetNextVisibleItem 檢索指定樹形檢視專案的下一個可見專案。 |
36 |
GetParentItem 檢索指定樹形檢視專案的父項。 |
37 |
GetPrevSiblingItem 檢索指定樹形檢視專案的上一個同級專案。 |
38 |
GetPrevVisibleItem 檢索指定樹形檢視專案的上一個可見專案。 |
39 |
GetRootItem 檢索指定樹形檢視專案的根節點。 |
40 |
GetScrollTime 檢索樹形檢視控制元件的最大滾動時間。 |
41 |
GetSelectedCount 檢索當前樹形檢視控制元件中選定專案的數量。 |
42 |
GetSelectedItem 檢索當前選定的樹形檢視專案。 |
43 |
GetTextColor 檢索控制元件的當前文字顏色。 |
44 |
GetToolTips 檢索樹形檢視控制元件使用的子工具提示控制元件的控制代碼。 |
45 |
GetVisibleCount 檢索與樹形檢視控制元件關聯的可見樹形專案的數量。 |
46 |
HitTest 返回與 CTreeCtrl 物件相關的當前游標位置。 |
47 |
InsertItem 在樹形檢視控制元件中插入一個新專案。 |
48 |
ItemHasChildren 如果指定專案有子專案則返回非零值 |
49 |
MapAccIdToItem 將指定的輔助功能識別符號對映到當前樹形檢視控制元件中樹形檢視專案的控制代碼。 |
50 |
MapItemToAccID 將當前樹形檢視控制元件中指定的樹形檢視專案的控制代碼對映到輔助功能識別符號。 |
51 |
Select 選擇、滾動到檢視中或重繪指定的樹形檢視專案。 |
52 |
SelectDropTarget 將樹形專案重繪為拖放操作的目標。 |
53 |
SelectItem 選擇指定的樹形檢視專案。 |
54 |
SelectSetFirstVisible 選擇指定的樹形檢視專案作為第一個可見專案。 |
55 |
SetAutoscrollInfo 設定當前樹形檢視控制元件的自動滾動速率。 |
56 |
SetBkColor 設定控制元件的背景顏色。 |
57 |
SetCheck 設定樹形控制元件專案的選中狀態。 |
58 |
SetExtendedStyle 設定當前樹形檢視控制元件的擴充套件樣式 |
59 |
SetImageList 設定與樹形檢視控制元件關聯的影像列表的控制代碼。 |
60 |
SetIndent 設定樹形檢視專案與其父項的偏移量(以畫素為單位)。 |
61 |
SetInsertMark 在樹形檢視控制元件中設定插入標記。 |
62 |
SetInsertMarkColor 設定用於繪製樹形檢視插入標記的顏色。 |
63 |
SetItem 設定指定樹形檢視專案的屬性。 |
64 |
SetItemData 設定與專案關聯的 32 位應用程式特定值。 |
65 |
SetItemExpandedImageIndex 設定在當前樹形檢視控制元件的指定專案處於展開狀態時要顯示的影像的索引。 |
66 |
SetItemHeight 設定樹形檢視專案的高度。 |
67 |
SetItemImage 將影像與專案關聯。 |
68 |
SetItemState 設定專案的狀體。 |
69 |
SetItemStateEx 設定當前樹形檢視控制元件中指定專案的擴充套件狀態。 |
70 |
SetItemText 設定專案的文字。 |
71 |
SetLineColor 設定樹形檢視控制元件的當前線條顏色。 |
72 |
SetScrollTime 設定樹形檢視控制元件的最大滾動時間。 |
73 |
SetTextColor 設定控制元件的文字顏色。 |
74 |
SetToolTips 設定樹形檢視控制元件的子工具提示控制元件。 |
75 |
ShowInfoTip 顯示當前樹形檢視控制元件中指定專案的提示資訊。 |
76 |
SortChildren 對給定父專案的子項進行排序。 |
77 |
SortChildrenCB 使用應用程式定義的排序函式對給定父專案的子項進行排序。 |
讓我們透過建立一個新的基於 MFC 對話方塊的專案來了解一個簡單的示例。
步驟 1 - 專案建立後,您將看到 TODO 行,它是文字控制元件的標題。刪除標題並將 ID 設定為 IDC_STATIC_TXT。
步驟 2 - 為靜態文字控制元件新增一個值變數 m_strTree。
步驟 3 - 從控制元件工具箱中拖動樹形控制元件。
步驟 4 - 在對話方塊上,單擊樹形控制元件以將其選中。在“屬性”視窗中,將“具有按鈕”、“具有線條”、“根節點處的線條”、“客戶端邊緣”和“模態框架”屬性設定為“True”。
步驟 5 - 為樹形控制元件新增一個控制元件變數 m_treeCtrl。
步驟 6 - 這是在 OnInitDialog() 中初始化樹形控制元件的程式碼
BOOL CMFCTreeControlDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
HTREEITEM hItem, hCar;
hItem = m_treeCtrl.InsertItem(L"Car Listing", TVI_ROOT);
hCar = m_treeCtrl.InsertItem(L"Economy", hItem);
m_treeCtrl.InsertItem(L"BH-733", hCar);
m_treeCtrl.InsertItem(L"SD-397", hCar);
m_treeCtrl.InsertItem(L"JU-538", hCar);
m_treeCtrl.InsertItem(L"DI-285", hCar);
m_treeCtrl.InsertItem(L"AK-830", hCar);
hCar = m_treeCtrl.InsertItem(L"Compact", hItem);
m_treeCtrl.InsertItem(L"HG-490", hCar);
m_treeCtrl.InsertItem(L"PE-473", hCar);
hCar = m_treeCtrl.InsertItem(L"Standard", hItem);
m_treeCtrl.InsertItem(L"SO-398", hCar);
m_treeCtrl.InsertItem(L"DF-438", hCar);
m_treeCtrl.InsertItem(L"IS-833", hCar);
hCar = m_treeCtrl.InsertItem(L"Full Size", hItem);
m_treeCtrl.InsertItem(L"PD-304", hCar);
hCar = m_treeCtrl.InsertItem(L"Mini Van", hItem);
m_treeCtrl.InsertItem(L"ID-497", hCar);
m_treeCtrl.InsertItem(L"RU-304", hCar);
m_treeCtrl.InsertItem(L"DK-905", hCar);
hCar = m_treeCtrl.InsertItem(L"SUV", hItem);
m_treeCtrl.InsertItem(L"FE-948", hCar);
m_treeCtrl.InsertItem(L"AD-940", hCar);
hCar = m_treeCtrl.InsertItem(L"Truck", hItem);
m_treeCtrl.InsertItem(L"HD-394", hCar);
return TRUE; // return TRUE unless you set the focus to a control
}
步驟 7 - 編譯並執行上述程式碼後,您將看到以下輸出。
mfc_windows_controls.htm