加个Timer控件
用GetForegroundWindow判断当前窗体
用GetWindowRect得到窗体大小
用ClipCursor设置鼠标区域

解决方案 »

  1.   

    GetForegroundWindow VB声明 
    Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As Long 
    说明 
    获得前台窗口的句柄。这里的“前台窗口”是指前台应用程序的活动窗口 
    返回值 
    Long,前台窗口的句柄 
    注解 
    windows nt支持多个桌面,它们相互间是独立的。每个桌面都有自己的前台窗口
     GetWindowRect VB声明 
    Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Long, lpRect As RECT) As Long 
    说明 
    获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    hwnd Long,想获得范围矩形的那个窗口的句柄 
    lpRect RECT,屏幕坐标中随同窗口装载的矩形 
    注解 
    如将它与通过GetDesktopWindow获得的句柄联合使用,可获得对整个可视显示区域(桌面)进行说明的矩形
     ClipCursor, ClipCursorBynum VB声明 
    Declare Function ClipCursor& Lib "user32" (lpRect As RECT)
    Declare Function ClipCursorBynum& Lib "user32" Alias "ClipCursor" (ByVal lpRect As Long) 
    说明 
    将指针限制到指定区域。ClipCursorBynum是一个别名,允许我们清除以前设置的指针剪切区域 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    lpRect RECT,指定一个矩形,用像素屏幕坐标系统表示。鼠标指针必须在这个区域内运动。如使用函数的ClipCursorBynum形式,则可将参数设为Long值,用它传递一个0,禁止指针剪切,恢复常规运作状态 
    注解 
    指针剪切后,按Ctrl+Alt+Del可简单的清除剪切区域
     
      

  2.   

    首先感谢楼上的,你的意思是不是要每个窗体都加一个Timer控件?这是不是有点,还有没有好一点的实现办法?