读书人

肾亏~为啥小弟我的CListCtrl的GetNext

发布时间: 2012-01-31 21:28:41 作者: rapoo

肾亏~~~为啥我的CListCtrl的GetNextItem,每次得到的居然都是上一次的选中项????
我试图在按下向上和向下箭头的时候,读取CListCtrl中的选中项的数据
结果我每次都是读到上一个选中项的数据
比如我按一下向下键,表中从第一项就到了第二项,而我得到的数据是第一项的
我再按一下向下键,表中从第二项到了第三项,而我得到了第二项的数据。

函数如下:

void CDlgIC::OnLvnKeydownListIcQx(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLVKEYDOWN pLVKeyDow = reinterpret_cast <LPNMLVKEYDOWN> (pNMHDR);
// TODO: 在此添加控件通知处理程序代码

if((pLVKeyDow-> wVKey==VK_DOWN)||(pLVKeyDow-> wVKey==VK_UP))
{
int nIndexSelected;
if((nIndexSelected=m_listIC.GetNextItem(-1,LVNI_SELECTED))!=-1)
{
str1 = _wtoi(m_listIC.GetItemText(nIndexSelect,0));
str2 = _wtoi(m_listIC.GetItemText(nIndexSelect,1));
this-> UpdateData(FALSE);
}
}

*pResult = 0;
}

[解决办法]
CListCtrl c;
POSITION pos = c.GetFirstSelectedItemPosition();
while( pos )
{
int n = c.GetNextSelectedItem(pos);
}
使用这个方法,N就是你选择的行
[解决办法]
GetNextItem(-1,LVNI_SELECTED))!=-1)
看看MSDN怎么说这个函数用法的。后面的标志LVNI_SELECTED有问题!

读书人网 >VC/MFC

热点推荐