如何在窗口非标题栏范围内隐藏鼠标,也就是说在窗口里,鼠标移到标题栏时显示鼠标,移动到窗口视图的时候隐藏鼠标.

解决方案 »

  1.   

    HCURSOR SetCursor(
      HCURSOR hCursor   // handle to cursor
    );
      

  2.   

    在PreTranslateMessage函数里,获得鼠标位置,再隐藏鼠标
      

  3.   

    初始化时执行TrackMouseEvent,窗口响应WM_MOUSEHOVER、WM_MOUSELEAVE消息来隐藏和显示鼠标指针。
      

  4.   

    能不能加下MSN啊,论坛太慢了
      

  5.   

    另外,用GetClientRect、ClientToWindow可以得到窗口客户区的屏幕坐标。
      

  6.   

    写错了,更正一下:
    另外,用GetClientRect、ClientToScreen可以得到窗口客户区的屏幕坐标。
      

  7.   

    用GetClientRect、ClientToScreen可以得到窗口客户区的屏幕坐标。
    然后SetCursor
      

  8.   

    LRESULT CTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    // TODO: Add your specialized code here and/or call the base class
    switch (message)
    {
    case WM_MOUSEMOVE:
      {
      SetCursor(0);
      break;
      }
    case WM_NCMOUSEMOVE:
      {
      SetCursor(LoadCursor(NULL, IDC_ARROW));
      break;
      } }
    return CDialog::WindowProc(message, wParam, lParam);
    }
    这样行不?
      

  9.   

        case WM_SETCURSOR:
        {
            if(LOWORD(lParam)!=HTCLIENT )
            {
                SetCursor(LoadCursor(NULL, IDC_ARROW));
            }
            else
            {
                SetCursor(NULL); 
            }    }
        break;
      

  10.   

    响应WM_SETCURSOR消息,在OnSetCursor中根据nHitTest参数设置鼠标:
    if (HTCAPTION != nHitTest)
    {
        SetCursor(NULL);
        return TRUE;
    }
      

  11.   

      ShowCursor(false);可以使光标隐藏了啊,现在问题是怎么确定那个范围,我试过了case WM_NCMOUSEMOVE:
    消息,有点作用,不过效果不是很好.
      

  12.   

    [size=16px]希望这样的给分大家满意,5楼的我在百度上看到过,不过不好用,老是报错,大概V6支持有点问题,我底层用的是风魂.
        case WM_MOUSEMOVE:   case WM_NCMOUSEMOVE:消息效果不是太好,鼠标一快就显出来,不过我也学习到了这个东西,呵呵,12楼的正解,完全照上面做的,不过十分感谢各位的指点
    [/size]