1. 程式人生 > >MFC 樹形控制元件與列表控制元件

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;
}

此外添加了一個位圖資源。