MFC 树形控件与列表控件

时间:2022-12-16 16:01:59

MFC 树形控件与列表控件


初始化区域代码:

// TODO:  在此添加额外的初始化代码

srand(time(NULL));

// 添加位图资源,必须要全局变量才行
m_treeImageListRoot.Create(IDB_BITMAP1, 24, 0, RGB(0, 255, 0));
m_treeImageListSon.Create(IDB_BITMAP2, 24, 1, RGB(0, 255, 0));
m_tree.SetImageList(&m_treeImageListSon, TVSIL_NORMAL);

// 一级控件
CString strRoot[4] = { L"朋友", L"同事", L"同学", L"家人" };
for (int i = 0; i < 4; i++){
hRoot[i] = m_tree.InsertItem(strRoot[i], 0, 0);
m_tree.SetItemData(hRoot[i], (DWORD)(i+100));
}

static int first = 1;
static int num = 0;
// 二级控件
CString firstName[12] = { L"赵",L"褚", L"钱", L"孙", L"李", L"周" ,L"吴",L"卫",L"陈",L"冯",L"王",L"郑"};
CString secondName[14] = { L"同", L"蚁", L"戢", L"止", L"己", L"潜", L"肖", L"泣", L"涂", L"种", L"冼", L"睢", L"地", L"根" };
CString thridName[20] = { L"", L"", L"", L"", L"", L"", L"", L"蔡", L"余", L"杜", L"叶", L"程", L"苏", L"魏", L"吕", L"丁", L"任", L"沈" ,L""};
for (int i = 0; i < 4; i++){
for (int j = 0; j < 4; j++){
childTree = m_tree.InsertItem(firstName[rand() % 12]+secondName[rand()%14]+thridName[rand()%20], 0, 0, hRoot[i], TVI_LAST);
m_tree.SetItemData(childTree, (DWORD)(num++));
if (first){
first = 0;
activeTree = childTree;
}
}
}

// 设置选定项
m_tree.Select(activeTree, TVGN_CARET);

// 列表控件
m_list.InsertColumn(0,L"类 别", LVCFMT_LEFT, 100);
m_list.InsertColumn(1,L"描 述", LVCFMT_LEFT, 150);

// 修改风格
m_list.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);

双击树形控件:

void CContactProcDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码

HTREEITEM SetItem;
CString Name = L"";
CString Num = L"";
CString Age = L"";
SetItem = m_tree.GetSelectedItem();
DWORD data = m_tree.GetItemData(SetItem);

Name = m_tree.GetItemText(SetItem); // 获取名字
Num.Format(L"ECJTU2015211000%d%d", data%10,data/10); // 学号
Age.Format(L"%d", rand() % 20 + 20); // 年龄

m_list.DeleteAllItems();
m_list.InsertItem(0, L"姓名:");
m_list.SetItemText(0, 1, Name);
m_list.InsertItem(1, L"学号:");
m_list.SetItemText(1, 1, Num);
m_list.InsertItem(2, L"性别:");
m_list.SetItemText(2, 1, rand() % 2 ? L"男" : L"女");
m_list.InsertItem(3, L"年龄:");
m_list.SetItemText(3, 1, Age);

*pResult = 0;
}

此外添加了一个位图资源。