关于::SendMessage(hWnd,LVM_GETITEM,(WPARAM)0,(LPARAM)&lvi)的问题
很简单的一段代码
LV_ITEM lvi;
lvi.iItem=::SendMessage(hWnd,LVM_GETNEXTITEM,(WPARAM)0,MAKELPARAM((UINT)LVNI_SELECTED,0));//1
if(-1!=lvi.iItem)
{
TCHAR szName[_MAX_FNAME];
lvi.mask=LVIF_TEXT;
lvi.iSubItem=0;
lvi.pszText=szName;
lvi.cchTextMax=_MAX_FNAME;
::SendMessage(hWnd,LVM_GETITEM,(WPARAM)0,(LPARAM)&lvi);//2
}
请问为什么第一个SendMessage会成功返回当前选中的项,第二个SendMessage却会失败???
[解决办法]
LV_ITEM.iSubItem
One-based index of the subitem to which this structure refers, or zero if this structure refers to an item rather than a subitem.
可能是mask=LVIF_TEXT, 而Item不能取回TEXT,只有SubItem才能取回Text。
绝对和hWnd是另外一个进程中的句柄无关。