MFC中的CListControl控件
一直想要这种效果,无奈刚开始用了cListbox控件,不知道怎么生成背景的边框,找了好久资料,突然发现好像控件用错了。
用CListControl控件实现图中效果,超级开心~
实现过程:
添加一个List Control控件,View属性设为Report,即为报表风格,Single Selection属性设为True
在OnInitDialog()函数中
CRect rect; m_listControl.GetClientRect(&rect); m_listControl.InsertColumn( 0, _T("PDF->图片文件"), LVCFMT_LEFT, rect.Width(),0);//插入列
在需要循环调用的函数中,添加内容:
m_listControl.SetExtendedStyle(m_listControl.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // 为列表视图控件添加全行选中和栅格风格 m_listControl.InsertItem(j, strTemp+_T("\\")+arr[j]);//插入行
实现选中行变化响应函数
void CUighurRecognitionDlg::OnLvnItemchangedList2(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; // TODO: 在此添加控件通知处理程序代码 //选中项变化时候,函数会响应多次,添加if中判断条件,使得选中项变化时只响应一次 if ((pNMListView-> uChanged&LVIF_STATE)&&(pNMListView-> uNewState& LVIS_SELECTED)&&!(pNMListView->uOldState & LVIS_FOCUSED)){ POSITION ps; int nIndex; ps=m_listControl.GetFirstSelectedItemPosition(); nIndex=m_listControl.GetNextSelectedItem(ps); m_listControl.SetItemState(nIndex,LVS_EX_FULLROWSELECT,LVS_EX_FULLROWSELECT); CString str; str=str+m_listControl.GetItemText(nIndex,0);//第一个参数是行数,第二个参数是列数,此处只有一列,所以为0 //SetDlgItemText(IDC_EDIT1,str); // MessageBox(str); } //SetDlgItemText(IDC_EDIT_IP,str); *pResult = 0; }