在使用list ctrl的LVN_INSERTITEM这个消息时,要得到某行某列的数据,比如0行1列,却得不到.请问是什么原因,代码如下:
void CCalcCostDlg::OnInsertitemList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
nCount = m_list.GetItemCount(); //这里可以得到nCount的数量
char buf[32] = "";
int sum = 0;
for(int i = 0; i < nCount; ++i)
{
memset(buf,0,sizeof(buf));
m_list.GetItemText(i,1,buf,sizeof(buf));//这里的buf为空,得不到数据
sum +=atoi(buf);
}
*pResult = 0;
}
void CCalcCostDlg::OnInsertitemList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
nCount = m_list.GetItemCount(); //这里可以得到nCount的数量
char buf[32] = "";
int sum = 0;
for(int i = 0; i < nCount; ++i)
{
memset(buf,0,sizeof(buf));
m_list.GetItemText(i,1,buf,sizeof(buf));//这里的buf为空,得不到数据
sum +=atoi(buf);
}
*pResult = 0;
}
你是在OnInsertitemList这个函数中写代码的,你要搞清楚这个函数是在什么时候被调用的,其实这个函数是在List执行InsertItem时就会被调用,而此时子条目还没有被插入进去啊~~ (就是用SetItemText()插入子条目),所以当然是空的了@_@你可以把一下这句话:
m_list.GetItemText(i,1,buf,sizeof(buf));//这里的buf为空,得不到数据 改为:m_list.GetItemText(i,0,buf,sizeof(buf));
得到0行0列就有数据了...
LVN_INSERTITEM和LVN_ITEMCHANGED这两个都不行..........