我使一个程序运行时窗口隐藏,仅在任务栏中显示一个图标。我给任务栏中的图标设了lbuttondown事件,让它换一个图标显示;lbuttonup事件,把图标换回来。但如果我按住左键不放,将其移出图标,则图标就监测不到lbuttonup事件了。
问如何处理?如果我想让图标知道什么时候鼠标在图标上(可以用mousemove事件),什么时候鼠标移出图标了(我不会),怎莫办?

解决方案 »

  1.   

    我已经把主窗口隐藏了,setcapture好像没用。
      

  2.   

    gz.这不是我昨天问JennyVenus() 的吗?他告诉我说在WM_SYSCOMAND里 捕获 SC_RESTORE我还没搞明白,后面怎么做。gz,gz,gz..........
      

  3.   

    没看清楚,不太一样,我说的Windows的状态栏,好像非楼主的系统托盘。
      

  4.   

    SetCapture具体如何实现?也许我写错了。
      

  5.   

    LRESULT MainWndOnMouseMove(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    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里面就可以了
    希望能够解决你的问题
      

  6.   

    实在不好意思。我仍然不会用TrackMouseEvent,或者说我“用”过之后仍无效果。可以发个EMAIL到:[email protected]吗?给个project吧。谢了。
      

  7.   

    而且如果它发出了MOUSELEAVE事件,程序又如何接收呢?WM_MOUSEMOVE在VC中无定义啊。
      

  8.   

    LRESULT MainWndOnMouseMove(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    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;
    }
      

  9.   


              
        afx_msg    LRESULT OnMouseLeave(WPARAM wParam ,LPARAM lParam)
          
        ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
      

  10.   

    我上面用的是Win32的,楼上的是用MFC的,你应该先学习一些基础的
      

  11.   

    如果你想针对frame来处理的话,应该是用timer来进行控制,再timer事件里面,获取
    当前鼠标的位置,然后判断鼠标是否在frame中,如果是在进行trackmouseevent调用
    就可以了,至于其他的方法我就不知道了,我就是这样做的