ListCtrl 如何选中行,再点按键修改里面数据
现在想实现如下功能:有一个List Control 选中其中一行 然后在父窗口中点“修改”按钮 修改数据 各位大神如何实现这个功能,新手求助。
[解决办法]
void CVerSectionDlg::OnNMClickListVsShow(NMHDR *pNMHDR, LRESULT *pResult){ LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); CPoint point(pNMItemActivate->ptAction); UINT uFlags; m_nItem = m_listResult.HitTest(point, &uFlags); GetDlgItem(IDC_BUTTON_VS_DELETEPIPE)->EnableWindow(TRUE); *pResult = 0;}
[解决办法]
在你的.h文件中定义一个成员变量
int m_ItemSelected;
按照1楼说所,相应ListCtrl控件的点击消息,然后
m_ItemSelected = -1;
POSITION pos = this->m_list.GetFirstSelectedItemPosition();
if (pos == NULL)
{
return ;
}
else
{
while (pos)
{
m_ItemSelected= this->m_list.GetNextSelectedItem(pos);
}
}
这样你就知道你点击的是那一条记录了
下一步就简单了啊
CString name = this->m_list.GetItemText(m_ItemSelected, 0 );
CString name1 = this->m_list.GetItemText(m_ItemSelected, 1 );
......
[解决办法]
m_list.SetItemState(nIdx, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
设置指定行的状态,可以改成选中或者未选中
响应修改按钮的OnEditButton
获取选中行(可能选中多行)
POSITION ps;
while(ps = m_list.GetFirstSelectedItemPosition())
{
int nIdx = m_list.GetNextSelectedItem(ps);
m_list.SetItemText(nIdx, nSubItem, _T("你要修改的内容"));
}
我的这个ListCtrl样式是报表样式的,根据需要你自行修改下
[解决办法]