use of list view and tree view

    技术2024-06-27  65

     1 create a MFC project

    2 add this line code in dialog header file :

         CImageList m_theImageList;

    3 create a dialog box like next picture:

     

     

    4 create maps for the two image:

    m_tree, m_list.

     

    5 add the following code to OnInitDialog fuction:

    m_theImageList.Create(IDB_BITMAP1, 16, 1, RGB(0, 255, 0)); m_tree.SetImageList(&m_theImageList,LVSIL_NORMAL); CString userTreeHeader[2] = {"shape", "color"}; HTREEITEM userItem[2]; for(int i = 0; i < 2; ++i){ userItem[i] = m_tree.InsertItem(userTreeHeader[i], 6, 7, TVI_ROOT); m_tree.SetItemData(userItem[i], (DWORD)(i + 10)); } HTREEITEM thePoint; HTREEITEM userSpecifics = m_tree.InsertItem("rectangle", 6, 7, userItem[0]); m_tree.SetItemData(userSpecifics, (DWORD)0); thePoint = userSpecifics; userSpecifics = m_tree.InsertItem("circle", 6, 7, userItem[0]); m_tree.SetItemData(userSpecifics, (DWORD)1); userSpecifics = m_tree.InsertItem("red", 6, 7, userItem[1]); m_tree.SetItemData(userSpecifics, (DWORD)2); userSpecifics = m_tree.InsertItem("blue", 6, 7, userItem[1]); m_tree.SetItemData(userSpecifics, (DWORD)3); userSpecifics = m_tree.InsertItem("gray", 6, 7, userItem[1]); m_tree.SetItemData(userSpecifics, (DWORD)4); m_tree.Select(thePoint, TVGN_CARET); m_list.SetImageList(&m_theImageList, LVSIL_SMALL); CString Field[3] = {"figure", "shape", "color"}; for(i = 0; i < 3; ++i){ m_list.InsertColumn(i, Field[i], LVCFMT_LEFT, 75); }  

     

    6 add TVN_SELCHANGED to tree map, add the following code in its fuction

    HTREEITEM SelItem; SelItem = m_tree.GetSelectedItem(); DWORD m; m = m_tree.GetItemData(SelItem); switch(m){ case 0: { m_list.DeleteAllItems(); m_list.InsertItem(0, "shape1", 0); m_list.SetItemText(0, 1, "rectangle"); m_list.SetItemText(0, 2, "gray"); m_list.InsertItem(1, "shape2", 1); m_list.SetItemText(1, 1, "rectangle"); m_list.SetItemText(1, 2, "red"); m_list.InsertItem(2, "shape3", 2); m_list.SetItemText(2, 1, "rectangle"); m_list.SetItemText(2, 2, "blue"); break; } case 1: { m_list.DeleteAllItems(); m_list.InsertItem(0, "shape1", 3); m_list.SetItemText(0, 1, "figure"); m_list.SetItemText(0, 2, "gray"); m_list.InsertItem(1, "shape2", 4); m_list.SetItemText(1, 1, "figure"); m_list.SetItemText(1, 2, "red"); m_list.InsertItem(2, "shape3", 5); m_list.SetItemText(2, 1, "figure"); m_list.SetItemText(2, 2, "blue"); break; } case 2: { m_list.DeleteAllItems(); m_list.InsertItem(0, "shape1", 1); m_list.SetItemText(0, 1, "rectangle"); m_list.SetItemText(0, 2, "red"); m_list.InsertItem(1, "shape2", 4); m_list.SetItemText(1, 1, "figure"); m_list.SetItemText(1, 2, "red"); } case 3: { m_list.DeleteAllItems(); m_list.InsertItem(0, "shape1", 2); m_list.SetItemText(0, 1, "rectangle"); m_list.SetItemText(0, 2, "blue"); m_list.InsertItem(1, "shape2", 5); m_list.SetItemText(1, 1, "figure"); m_list.SetItemText(1, 2, "blue"); } case 4: { m_list.DeleteAllItems(); m_list.InsertItem(0, "shape1", 0); m_list.SetItemText(0, 1, "rectangle"); m_list.SetItemText(0, 2, "gray"); m_list.InsertItem(1, "shape2", 3); m_list.SetItemText(1, 1, "figure"); m_list.SetItemText(1, 2, "gray"); } }

     

    7 add LVN_ITEMCHANGED to list map, add the following code in its fuction

     

      CString str; for(int i = 0; i < m_list.GetItemCount(); ++i){ if(m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED){ str.Format(_T("select %d line"), i + 1); AfxMessageBox(str); } }

    最新回复(0)