我想将一个列表框中的数据双击之后传递到另一个列表框中 但是不知道为什么传递过去的数据显示不全 本该有数据的表头下却是空的
希望有人可以帮忙看一下问题 解答一下 谢谢!
void CDataMgrDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)
{
TCHAR szBuf[100];
/* memset(szBuf, 0, sizeof(szBuf));*/
// LVITEM 数据结构, 用来获取CListCtrl的列表项的值
LVITEM lvi;
lvi.pszText = szBuf; //存放item的文本内容
lvi.iItem = -1; //索引下标
lvi.iSubItem = 0;
lvi.mask = LVIF_TEXT;
lvi.cchTextMax = 1024;
CString str;
for(int i = 0; i < m_list.GetItemCount(); i++)
{
if (LVIS_SELECTED == m_list.GetItemState(i, LVIS_SELECTED))
{
lvi.iItem = i;
m_list.GetItem(&lvi);
TCHAR szBuf2[100];
LVITEM lvi2;
lvi2.pszText = szBuf2; //存放item的文本内容
lvi2.iItem = -1; //索引下标
lvi2.iSubItem = 0;
lvi2.mask = LVIF_TEXT;
lvi2.cchTextMax = 1024;
for(int j = 0; j < m_list1.GetItemCount(); j++)
{
lvi2.iItem = j; //一条条表项进行比较
m_list1.GetItem(&lvi2);
if(!strcmp(lvi.pszText, lvi2.pszText)) //如果左边选中的表项跟右边有重复,则不添加到右边了
{
m_flag = FALSE;
break;
}
}
if(m_flag)
{
m_indexRight++;
m_list1.InsertItem(m_indexRight, szBuf);
m_list1.SetItemText(m_indexRight, 1, m_list1.GetItemText(i, 1));
}
m_flag = TRUE;
}
}
*pResult = 0;
}
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。