有时候在游戏中的窗口模式下想把鼠标限制在游戏窗口的区域内,有时候想把鼠标活动限制区域解除,用程序如何实现?(以前看过用程序来限制鼠标的活动区域,不过那只是针对该程序本身,感觉对其他程序使用不行,是不是要用到消息拦截?)

解决方案 »

  1.   

    运用鼠标捕捉功能:SetCapture(),当鼠标超出某个矩形后,把鼠标重新定位一下,等于给又拉了回来。不需要限制鼠标范围时,再解除捕捉。
      

  2.   

    使用API函数ClipCursor可以将鼠标限定在某一区域;
    比如将鼠标限定在对话框中的静态文本框(IDC_CLIPRECT)
    //限定
    void CLimitCursorPosDlg::OnClipcursor()
    {
       CWnd *pWnd = GetDlgItem(IDC_CLIPRECT);
       CRect rc;
       pWnd->GetWindowRect(&rc);
       //设定区域
       ClipCursor(&rc);
    }
    void CLimitCursorPosDlg::OnReleaseclip()
    {
       ClipCursor(NULL);
    }
      

  3.   

    用下面三个API函数组合
     ClipCursor
    ClipCursorClear 
     ClientToScreen
      

  4.   

    用mousemove消息,自己判断也可以吧。
      

  5.   

    这个是不是对程序本身的?我是想用这个程序针对别的窗口的鼠标活动范围进行控制,而不是该程序本身
    --------------------
    用HOOK吧。
      

  6.   

    限制在本窗口:
    CRect rect1;
    GetWindowRect(&rect1);
    ClipCursor(&rect1);