VC下MFC的CListCtrl的使用与技巧(Use CListCtrl)
1.CListCtrl显示样式的改变
m_pCtrl = &this->GetListCtrl(); //获得指针 //CListCtrl样式改变 LONG lStyle; lStyle = GetWindowLong(m_pCtrl->m_hWnd, GWL_STYLE); //获取当前窗口style lStyle &= ~LVS_TYPEMASK; //清除显示方式 lStyle |= LVS_REPORT; //设置style为Report显示 SetWindowLong(m_pCtrl->m_hWnd, GWL_STYLE, lStyle); //CListCtrl扩展样式改变 DWORD dwStyle; dwStyle = m_pCtrl->GetStyle(); //取得样式 dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT ; //添加样式 m_pCtrl->SetExtendedStyle(dwStyle); //重新设置
需要的样式(根据自己的需要的样式选择)
LVS_ICON: 为每个item显示大图标
LVS_SMALLICON: 为每个item显示小图标
LVS_LIST: 显示一列带有小图标的item
LVS_REPORT: 显示item详细资料
LVS_EX_FULLROWSELECT: 表示选中某行使整行高亮(只适用与report风格的CListCtrl)
LVS_EX_GRIDLINES: 表示显示网格线(只适用与report风格的CListCtrl)
2.添加CListCtrl的记录
//插入列 m_pCtrl->InsertColumn(1,"第一列",LVCFMT_CENTER,47); //序号,标题,标题显示位置,列宽度 m_pCtrl->InsertColumn(2,"第二列",LVCFMT_CENTER,100); //写入数据 int nRow = m_list.InsertItem(0, “无用字符串”); //插入行 m_list.SetItemText(nRow, 1, “1111”); //设置数据 m_list.SetItemText(nRow, 2, “2222”); //设置数据
3.判断CListCtrl的哪行记录被选中了
int n = -1; POSITION pos = m_pCtrl->GetFirstSelectedItemPosition(); //返回第一个选中的行位置 if (pos != NULL) { while (pos) { n = m_pCtrl->GetNextSelectedItem(pos); //返回下一个选中的行数(返回值从0开始) //做相应操作 } }
4.响应单击CListCtrl事件
//响应CMyListView的=NUM_CLICK消息 //直接用VC类向导生成后,不用再次添加声明和消息映射 //添加函数声明 afx_msg void OnClick(NMHDR* pNMHDR, LRESULT* pResult); //添加消息映射 ON_NOTIFY_REFLECT(NM_CLICK, OnClick) void CMyListView::OnClick(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if(pNMListView->iItem != -1) { /* CString strtemp; strtemp.Format("单击的是第%d行第%d列", pNMListView->iItem, pNMListView->iSubItem); AfxMessageBox(strtemp); */ //值从0开始计算,无数据区不相应时间 //相应操作 } *pResult = 0; }
5.CListCtrl单击表头排序(不会,待查)
Trackback from your site.