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
}
posted @   double64  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示