有很多人发现nItem的值是胡乱显示的,或者不管是点鼠标,或者是按键,以下消息都会调用3次,经过多次研究,终于解决了。今天放上源代码。
void CDlgBrowse2::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
CString Filename;
static int nItem=-1;
POSITION pos=m_wndShellList.GetFirstSelectedItemPosition();//m_list是定义的CListCtrl对象
if(pos==NULL)
return;
int nNewItem=m_wndShellList.GetNextSelectedItem(pos);
if(nItem==-1 || nItem != nNewItem ) //只要跟前面不一样,就拿过来。
{
nItem=nNewItem;
m_wndShellList.GetItemPath(Filename,nItem);
MessageBox(Filename.GetBuffer());
}
*pResult = 0;
}
www.yijiku.com 一级酷绣花网,欢迎来看看