//********************************************************* // //设置ListCtrl的View样式 // m_listCtrl.SetView(LV_VIEW_DETAILS); //还有其它样式: View属性值 //LV_VIEW_DETAILS --- Report //LV_VIEW_ICON --- Icon //LV_VIEW_SMALLICON --- Small Icon //LV_VIEW_LIST --- List //使用最多的样式是LV_VIEW_DETAILS即View风格为Report //一般是在ListCtrl控件的属性页面里设置View值为Report //********************************************************* // //设置ListCtrl的风格 // DWORD dwStyle = ::GetWindowLong(m_listCtrl.GetSafeHwnd(), GWL_STYLE); dwStyle |= LVS_SINGLESEL; //只可单行选中 dwStyle |= LVS_SHOWSELALWAYS; //Always show selection ::SetWindowLong(m_listCtrl.GetSafeHwnd(), GWL_STYLE, dwStyle); //********************************************************* // //设置ListCtrl的扩展风格 // DWORD dwStyle = m_listCtrl.GetExtendedStyle(); dwStyle |= LVS_EX_GRIDLINES; //网格线 dwStyle |= LVS_EX_FULLROWSELECT; //整行高亮 dwStyle |= LVS_EX_CHECKBOXES; //Item前生成check box m_listCtrl.SetExtendedStyle(dwStyle); //********************************************************* // //通过Image间接设置行高 // m_imgList.Create(1, 20, ILC_COLOR32, 1, 1); //图片宽1高20 m_listCtrl.SetImageList(&m_imgList, LVSIL_SMALL); //********************************************************* // //插入Column // m_listCtrl.InsertColumn(0, TEXT("Name"), LVCFMT_LEFT, 100); m_listCtrl.InsertColumn(1, TEXT("Age"), LVCFMT_LEFT, 40); m_listCtrl.InsertColumn(2, TEXT("Gender"), LVCFMT_LEFT, 60); //********************************************************* // //插入Item // int nItem = 0; nItem = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), TEXT("WangYao"), 0); m_listCtrl.SetItemText(nItem, 1, TEXT("26")); //子项从1开始,0代表主项 m_listCtrl.SetItemText(nItem, 2, TEXT("Male")); nItem = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), TEXT("WangYan"), 0); m_listCtrl.SetItemText(nItem, 1, TEXT("24")); m_listCtrl.SetItemText(nItem, 2, TEXT("Female")); //********************************************************* // //删除Column // m_listCtrl.DeleteColumn(nCol); //删除所有列(1) int nColumnCount = m_listCtrl.GetHeaderCtrl()->GetItemCount(); for (int i=0; i < nColumnCount; i++) { m_listCtrl.DeleteColumn(0); } //删除所有列(2) while (m_listCtrl.DeleteColumn(0)); //********************************************************* // //删除Item // m_listCtrl.DeleteItem(nItem); m_listCtrl.DeleteAllItems(); //********************************************************* // //获取指定行指定列的Item Text: GetItemText // CString cstrInfo = m_listCtrl.GetItemText(1, 0); //与SetItemText对应 //********************************************************* // //SetItemData与GetItemData:设置与获取附加数据 // BOOL SetItemData(int nItem, DWORD_PTR dwData) DWORD_PTR GetItemData(int nItem) const //********************************************************* // //获取当前选中项s // //方法1: POSITION pos = m_listCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) //当前没有选中项 { } else //有选中项 { while (pos) { int nItem = m_listCtrl.GetNextSelectedItem(pos); //获取选中项的序号 } } //方法2: for(int i=0; i<m_listCtrl.GetItemCount(); i++) { if(m_listCtrl.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED) { //表明选中第i项 } } //********************************************************* // //利用代码选中或取消选中某Item // //选中:(当然LVIS_FOCUSED可以省略) m_listCtrl.SetItemState(nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); m_listCtrl.SetItemState(nItem, LVIS_SELECTED, LVIS_SELECTED); //取消选中(当然LVIS_FOCUSED可以省略) m_listCtrl.SetItemState(nItem, 0, LVIS_SELECTED | LVIS_FOCUSED); m_listCtrl.SetItemState(nItem, 0, LVIS_SELECTED); //********************************************************* // //获取或设置Check Box状态 // BOOL GetCheck(int nItem) const; BOOL SetCheck(int nItem, BOOL fCheck = TRUE); // // HitTest // CPoint pnt; ::GetCursorPos(&pnt); m_listCtrl.ScreenToClient(&pnt); LVHITTESTINFO info; info.pt = pnt; info.flags = LVHT_ONITEM; m_listCtrl.SubItemHitTest(&info); if (info.iItem == -1) return;