MFC - Tree 树视图控件

树视图控件是一个显示项目分层列表的窗口,例如文档中的标题、索引中的条目或磁盘上的文件和目录。 每个项目都包含一个标签和一个可选的位图图像,每个项目都可以有一个与其关联的子项目列表。 通过单击某个项目,用户可以展开和折叠相关的子项目列表。 它由CTreeCtrl类表示。

让我们通过创建一个新的基于 MFC 对话框的项目来研究一个简单的示例。

步骤 1 − 项目创建后,您将看到 TODO 行,即文本控件的标题。 删除标题并将其 ID 设置为 IDC_STATIC_TXT。

步骤 2 − 为静态文本控件添加值变量 m_strTree。

树控件

步骤 3 − 从"控件"工具箱中,拖动"树控件"。

拖动树控件

步骤 4 − 在对话框中,单击树控件将其选中。 在"属性"窗口中,将"有按钮"、"有线"、"根线"、"客户端边缘"和"模态框架"属性设置为 True。

步骤 5 − 为 Tee Control 添加控件变量 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.html