1、怎样让在ListCtrl控件中每次单击都是选中一行?
答:这是List Control的一个扩展样式,在初始化时进行设置即可。添加如下代码。
m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT);
2、怎样给ListCtrl加上网格?
答:同样是List Control的拓展样式。添加代码如下。
m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() | LVS_EX_GRIDLINES);
3、如何让ListCtrl控件中的文本能够被编辑?
答:首先将ListCtrl的属性中的Edit Labels选项设置为True,表示允许ListCtrl中的内容被编辑。
然后为ListCtrl添加相应LVN_ENDLABELEDIT消息的函数,如下代码:
void CListCtrlDlg::OnLvnEndlabeleditList(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
/****************************/
//第一步:用于保存编辑后的文本信息。
CString strText;
//第二部:获取用户输入的内容,并将获取的文本信息存入strText中。
m_ListCtrl.GetEditControl()->GetWindowText(strText);
//第三部:将获取的信息显示到ListCtrl中。
m_ListCtrl.SetItemText(pDispInfo->item.iItem, pDispInfo->item.iSubItem, strText);
/***************************/
*pResult = 0;
}
当需要修改ClistCtrl的时候,ClistCtrl会创建一个CEdit用于修改子项的的内容,GetEditControl()就是用于获取这个CEdit的指针。