MFC TreeView 控件的基本认识
▲ 树控件
OnInitDialog() 里面的一些基础操作。
BOOL CMFCApplication1Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != nullptr)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
HICON icons[3]; // 先加载三个 icon
icons[0] = AfxGetApp()->LoadIconW(IDI_ICON1); // 这些ID手动添加 ICON 资源
icons[1] = AfxGetApp()->LoadIconW(IDI_ICON2);
icons[2] = AfxGetApp()->LoadIconW(IDI_ICON3);
// 30,30 图片的宽度和高度 ILC_COLOR32 样式, 3,3 有多少图片写多少。
m_ImageList.Create(30, 30, ILC_COLOR32, 3, 3);
for (int i = 0; i < 3; ++i) {
m_ImageList.Add(icons[i]); // 图片列表增加图标
}
// 树控件设置图片
CTreeCtrl* treeCtrl = (CTreeCtrl*)GetDlgItem(ID_TREE_TEST);
m_TreeCtrl.SetImageList(&m_ImageList, TVSIL_NORMAL); // 界面关联的变量
// 给树创建节点
HTREEITEM root = treeCtrl->InsertItem(_T("根节点"), 0, 0, NULL);
HTREEITEM father = treeCtrl->InsertItem(_T("父节点"), 1, 1, root);
HTREEITEM son = treeCtrl->InsertItem(_T("子节点"), 2, 2, father);
HTREEITEM root1 = m_TreeCtrl.InsertItem(_T("根节点"), 0, 0, NULL);
HTREEITEM father1 = m_TreeCtrl.InsertItem(_T("父节点"), 1, 1, root1);
HTREEITEM son1 = m_TreeCtrl.InsertItem(_T("子节点"), 2, 2, father1);
// 设置某个几点被选中
treeCtrl->SelectItem(son); // 选中会呈现出展开
treeCtrl->SelectItem(father1);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了