http://blog.csdn.net/lovton/article/details/6527208这是常规listcontrol用法
最近项目需要编辑listcontrol的任意一个子项。在网上查了很多信息,没有查到如何只修改listcontrol的属性来修改它的子项。若哪位仁兄仁姐知道请告知一二,先谢过啦。
我用的方法是:添加两个控件,1.listcontrol控件,添加控件变量m_list1;2.edit控件,添加控件变量m_edit。
添加listcontrol的单击事件OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)。
OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
int nItem,nSubItem;
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; //强制转换
nItem=pNMListView->iItem;//选中的行号
nSubItem=pNMListView->iSubItem;//选中的列号
if(nSubItem==0||nSubItem==-1||nItem==-1)
return;//如果单击在列名或第一列则不做任何事
m_list1.GetSubItemRect(nItem,nSubItem,LVIR_LABEL,rcCtrl);//得到选中子项的矩形
m_edit.SetParent(&m_list1);//将list选为edit的父窗口,有的程序没有这一句也可以,不知道为什么
m_edit.MoveWindow(&rcCtrl);//将edit移动到子项的举行区域,使看起来和编辑子项一样
CString stredit=m_list1.GetItemText(nItem,nSubItem);//stredit存放选中子项的内容
m_edit.SetWindowText(stredit);//使edit显示选中子项的内容
m_edit.SetFocus();//使edit得到焦点
}此程序只是实现将edit的位置放在子项位置,并将子项的值显示在edit中,不能完成将edit中的值保存在子项中。