我使一个程序运行时窗口隐藏,仅在任务栏中显示一个图标。我给任务栏中的图标设了lbuttondown事件,让它换一个图标显示;lbuttonup事件,把图标换回来。但如果我按住左键不放,将其移出图标,则图标就监测不到lbuttonup事件了。
问如何处理?如果我想让图标知道什么时候鼠标在图标上(可以用mousemove事件),什么时候鼠标移出图标了(我不会),怎莫办?
问如何处理?如果我想让图标知道什么时候鼠标在图标上(可以用mousemove事件),什么时候鼠标移出图标了(我不会),怎莫办?
{
TRACKMOUSEEVENT EventTrack;
ZeroMemory(&EventTrack, sizeof(TRACKMOUSEEVENT));
EventTrack.cbSize = sizeof(TRACKMOUSEEVENT);
EventTrack.hwndTrack = hWnd;
EventTrack.dwFlags = TME_LEAVE;
EventTrack.dwHoverTime = HOVER_DEFAULT;
TrackMouseEvent(&EventTrack);
}TrackMouseEvent调用一次就失效了,所以每次都要重新调用,放到MouseMove里面就可以了
希望能够解决你的问题
{
TRACKMOUSEEVENT EventTrack;
ZeroMemory(&EventTrack, sizeof(TRACKMOUSEEVENT));
EventTrack.cbSize = sizeof(TRACKMOUSEEVENT);
EventTrack.hwndTrack = hWnd;
EventTrack.dwFlags = TME_LEAVE;
EventTrack.dwHoverTime = HOVER_DEFAULT;
TrackMouseEvent(&EventTrack);
}
LRESULT MainWndOnMouseLeave(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
MessageBox(NULL, "Mouse has leaved the window", "Information", MB_OK);
return 0;
}
afx_msg LRESULT OnMouseLeave(WPARAM wParam ,LPARAM lParam)
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
当前鼠标的位置,然后判断鼠标是否在frame中,如果是在进行trackmouseevent调用
就可以了,至于其他的方法我就不知道了,我就是这样做的