我觉得happyparrot和满天星说的方法应该都可以实现我说的功能, happyparrot,我按照你说的方法试了一下,报了两个错误 error C2065: 'm_WPList' : undeclared identifier error C2228: left of '.GetSubItemRect' must have class/struct/union type OnClkWplist(NMHDR* pNMHDR, LRESULT* pResult)这个函数是响应ListCtrl的消息函数还是自己随便添加的函数?还有'm_WPList' 是什么变量?to 满天星 你说的方法我觉得应该还比较简单,但是我对HitTest函数不是太熟悉,看了msdn以后还是不太明白,是不是还要获得当前鼠标的位置,你能不能给点详细的代码呢,多谢!
int HitTest( CPoint pt, UINT* pFlags = NULL ); pt给鼠标坐标,pFlags给一个UINT型变量,函数返回后判断pFlags==LVHT_ONITEMICON。
这个CImageList对象里面要有一个空白的ICON,最好放在第一的位置。这样你在InsertItem的时候不指定图标索引,就默认为“0”而显示一张空白的ICON,也就等于没有图片。
你说的我听的不是很明白,能不能给点详细的代码呢,多谢!
{
NMLISTVIEW *pItem = (NMLISTVIEW*)pNMHDR;
if(pItem->iSubItem == 0)//确定点击的是第一列
{
CRect gridRc;
m_WPList.GetSubItemRect(pItem->iItem,pItem->iSubItem,LVIR_BOUNDS,gridRc);
gridRc.right = gridRc.left + 16;//假设图标宽度为16
ClientToScreen(gridRc);
CPoint pt;
GetCursorPos(&pt);
if(gridRc.PtInRect(pt))
{
//弹出提示
}
}
}
你测试一下,可能在坐标系转换过程中还不是完全正确。
happyparrot,我按照你说的方法试了一下,报了两个错误
error C2065: 'm_WPList' : undeclared identifier
error C2228: left of '.GetSubItemRect' must have class/struct/union type
OnClkWplist(NMHDR* pNMHDR, LRESULT* pResult)这个函数是响应ListCtrl的消息函数还是自己随便添加的函数?还有'm_WPList' 是什么变量?to 满天星
你说的方法我觉得应该还比较简单,但是我对HitTest函数不是太熟悉,看了msdn以后还是不太明白,是不是还要获得当前鼠标的位置,你能不能给点详细的代码呢,多谢!
CPoint pt,
UINT* pFlags = NULL
);
pt给鼠标坐标,pFlags给一个UINT型变量,函数返回后判断pFlags==LVHT_ONITEMICON。