现在我得到了桌面sysListView32控件的句柄,我想知道如何判断鼠标经过或hover桌面sysListView32的哪一项(也就是判断鼠标是否在或在哪一个桌面的快捷方式或图标上)。
当鼠标经过桌面上一个快捷方式时,会高亮显示。系统是如何判断的呢?
如果我想获得这个消息,应该如何实现
希望大家能提供一下思路或源码更好,呵呵
当鼠标经过桌面上一个快捷方式时,会高亮显示。系统是如何判断的呢?
如果我想获得这个消息,应该如何实现
希望大家能提供一下思路或源码更好,呵呵
对于鼠标点击桌面的消息来判断点击了某一项,我已经有了思路,利用ListView_HitTest函数,和鼠标的位置消息便可以判断。
但对于鼠标经过某一项或hover是,触发什么消息,现在还不太清楚,现在大概的思路是利用mouse move消息。
在MouseProc函数里
case WM_MOUSEMOVE:
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = pMouseHook->hwnd;
tme.dwFlags = TME_LEAVE|TME_HOVER;
tme.dwHoverTime = 1000;
g_bTracking = TrackMouseEvent(&tme);还需要安装WH_GETMESSAGE钩子。因为WM_MOUSEHOVER消息是在message的消息队列里,不会被WH_MOUSE钩子拦截。
在GetMsgProc函数里:
LPMSG pMsg = (LPMSG)lParam;
switch(pMsg->message)
{
case WM_MOUSEHOVER:
TCHAR szDebug[100];
wsprintf(szDebug, TEXT("Hover"));
OutputDebugString (szDebug);
break;
}
望大家可以参考一下