1. 程式人生 > 實用技巧 >MFC-CListCtrl列表控制元件

MFC-CListCtrl列表控制元件

內容轉載自https://www.bilibili.com/video/BV1AT4y137gS?p=12

hpp
    CImageList m_ilLarge;
    CImageList m_ilSmall;



cpp

BOOL CMFCApplication4Dlg::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: 在此新增額外的初始化程式碼 //設定list控制元件樣式(詳細資訊樣式) m_list.ModifyStyle(LVS_TYPEMASK, LVS_REPORT);
//新增列 m_list.InsertColumn(0, "第1列", LVCFMT_LEFT, 120); m_list.InsertColumn(1, "第2列", LVCFMT_LEFT, 120); //建立影象列表(使用準備好的bmp資源) m_ilLarge.Create(IDB_LARGEDOC, 32, 1, RGB(255, 0, 255)); m_ilSmall.Create(IDB_SMALLDOC, 16, 1, RGB(255, 0, 255)); //為list控制元件設定影象 m_list.SetImageList(&m_ilLarge, LVSIL_NORMAL); m_list.SetImageList(&m_ilSmall, LVSIL_SMALL); return TRUE; // 除非將焦點設定到控制元件,否則返回 TRUE } void CMFCApplication4Dlg::OnBnClickedBtnAdd() { // TODO: 在此新增控制元件通知處理程式程式碼 //獲得總行數 int nCount = m_list.GetItemCount(); CString strText; strText.Format("第%d行,第1列", nCount + 1); //加入行 m_list.InsertItem(nCount, strText, 0);//使用影象列表中的第一個圖示 strText.Format("第%d行,第2列", nCount + 1); m_list.SetItemText(nCount, 1, strText); } void CMFCApplication4Dlg::OnBnClickedBtnDelete() { // TODO: 在此新增控制元件通知處理程式程式碼 //獲得總行數 int nCount = m_list.GetItemCount(); for (int i = nCount; i >=0 ; i--)//從大往小迴圈 { if (m_list.GetItemState(i,LVIS_SELECTED) == LVIS_SELECTED)//判斷這一行狀態是否被選中 { m_list.DeleteItem(i);//刪除掉這一行 } } } void CMFCApplication4Dlg::OnCbnSelchangeCmbView() { // TODO: 在此新增控制元件通知處理程式程式碼 DWORD dwStyle; //獲得組合框控制元件 CComboBox *pView; pView = (CComboBox *)GetDlgItem(IDC_CMB_VIEW); switch (pView->GetCurSel())//當前選中的 { case 0: dwStyle = LVS_ICON;//大圖示 break; case 1: dwStyle = LVS_SMALLICON;//小圖示 break; case 2: dwStyle = LVS_LIST;//列表 break; case 3: dwStyle = LVS_REPORT;//詳細資訊 break; default: return; } m_list.ModifyStyle(LVS_TYPEMASK, dwStyle); }