1 树形控件
先了解相关知识。
1)创建基于对话框的项目。
2)删除对话框原有的内容,添加树形控件TreeControl。
3)右击树形控件属性,然后添加相应属性。
4)在资源视图里面右击icon文件夹,添加资源,选择icon导入预先准备好的图片。
5)由于我们需要在节点中显示图片,所以我们需要准备一个成员变量的图片列表。
CImageList m_imageList;
6)关联属性控件。右击树形控件添加Control变量即可。
7)编写代码。一般树形控件的初始化代码都是放在对话框的初始化函数OnInitDialog。
BOOL CshuxingkongjianDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
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: 在此添加额外的初始化代码
//1 加载图标
HICON icon[3];
icon[0] = AfxGetApp()->LoadIconW(IDI_ICON1);
icon[1] = AfxGetApp()->LoadIconW(IDI_ICON2);
icon[2] = AfxGetApp()->LoadIconW(IDI_ICON3);
//2 创建图像列表,必须为成员变量,因为程序结束前不能被释放
m_imageList.Create(30, 30, ILC_COLOR32, 3, 3);//参12代表图片像素大小,参3代表图片样式,参45代表图片个数,具体查看msdn
//3 给图像列表加载图片
for (int i = 0; i < 3; i++) {
m_imageList.Add(icon[i]);
}
//4 树形控件设置图像列表
m_treeCtrl.SetImageList(&m_imageList, TVSIL_NORMAL);//参2代表正常显示,具体查看msdn
//5 给树形控件添加节点
HTREEITEM root = m_treeCtrl.InsertItem(TEXT("根节点"), 0, 0, NULL);//参2代表点击节点前显示的图片,参3代表点击后显示的图片
HTREEITEM father = m_treeCtrl.InsertItem(TEXT("父节点"), 1, 1, root);
HTREEITEM son = m_treeCtrl.InsertItem(TEXT("子节点"), 2, 2, father);
HTREEITEM root2 = m_treeCtrl.InsertItem(TEXT("根节点"), 0, 0, NULL);//参2代表点击节点前显示的图片,参3代表点击后显示的图片
HTREEITEM father2 = m_treeCtrl.InsertItem(TEXT("父节点"), 1, 1, root2);
HTREEITEM son2 = m_treeCtrl.InsertItem(TEXT("子节点"), 2, 2, father2);
//可以设置某个默认选中节点,以此展开
m_treeCtrl.SelectItem(father);
m_treeCtrl.SelectItem(son2);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
结果: