CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

如何将光标限制在窗体范围内移动,光标不能移出窗体

楼主ASDFASFALKJH()2006-05-03 15:30:05 在 .NET技术 / VB.NET 提问

小弟水平不高,请各位大哥给出详细代码,万分感谢 问题点数:30、回复次数:14Top

1 楼laviewpbt(人一定要靠自己)回复于 2006-05-03 16:42:31 得分 0

 
          Declare   Auto   Function   ClipCursor   Lib   "user32"   (ByRef   lpRect   As   Rectangle)   As   Integer  
          Declare   Auto   Function   ShowCursor   Lib   "user32"   (ByVal   bShow   As   Integer)   As   Integer  
          Declare   Auto   Function   GetWindowRect   Lib   "user32"   (ByVal   hwnd   As   IntPtr,   ByVal   lpRect   As   Rectangle)   As   Long  
   
   
          '设定Mouse可移动的围是在某个control项之内  
          Public   Function   toLockCursor(ByVal   hwnd   As   IntPtr)   As   Boolean  
                  Dim   rect   As   New   Rectangle(Me.Location,   Me.Size)  
                  Dim   res   As   Integer  
                  res   =   ClipCursor(rect)  
                  If   res   =   1   Then  
                          toLockCursor   =   True  
                  Else  
                          toLockCursor   =   False  
                  End   If  
          End   Function  
   
          '设定Mouse移动的围为个萤幕  
          Public   Sub   toUnLockCursor()  
                  Dim   rscreen   As   New   Rectangle(0,   0,   Screen.PrimaryScreen.WorkingArea.Width,   Screen.PrimaryScreen.WorkingArea.Height)  
                  ClipCursor(rscreen)  
          End   SubTop

2 楼ASDFASFALKJH()回复于 2006-05-03 17:11:58 得分 0

谢谢,不过我不知道这个程序如何运行Top

3 楼ASDFASFALKJH()回复于 2006-05-03 17:39:07 得分 0

当'设定Mouse移动的围为个萤幕时,如  
  Dim   rscreen   As   New   Rectangle(100,   100,   Screen.PrimaryScreen.WorkingArea.Width,    
  发现只要该窗体失去焦点,该程序就失去作用  
   
  '设定Mouse可移动的围是在某个control项之内的程序  
  我不知道如何使用该程序Top

4 楼yinweihong()回复于 2006-05-03 20:36:35 得分 0

这个没什么作用,按一下win键或者任务管理器热键鼠标还是可以移出来了Top

5 楼ASDFASFALKJH()回复于 2006-05-05 01:00:25 得分 0

有人会吗Top

6 楼ASDFASFALKJH()回复于 2006-05-05 09:41:57 得分 0

有人会吗Top

7 楼kssys()回复于 2006-05-05 10:03:43 得分 0

有个折衷的办法  
  用Timer,每隔1秒就设置一下鼠标移动区域Top

8 楼ASDFASFALKJH()回复于 2006-05-05 10:33:02 得分 0

好象在VB6中可以用API来实现,可在VB.NET中不知如何使用APITop

9 楼kssys()回复于 2006-05-05 18:15:21 得分 0

使用以下语句导入API相关函数(C#版):  
  using   System.Runtime.InteropServices;  
  //VB应该是imports   System.Runtime.InteropServices;  
   
  Private   Type   RECT  
                  Left   As   Long  
                  Top   As   Long  
                  Right   As   Long  
                  Bottom   As   Long  
  End   Type  
   
  [DllImport("user32",EntryPoint="ClipCursor",  
  CallingConvention=CallingConvention.StdCall]  
  public   static   Integer   ClipCursor(Rectangle   AS   RECT);Top

10 楼ASDFASFALKJH()回复于 2006-05-05 18:25:41 得分 0

能不能换成VB.NET语言啊Top

11 楼kssys()回复于 2006-05-05 18:37:40 得分 0

2楼的回复就是VB.NET语言啊,直接复制使用就可以了Top

12 楼ASDFASFALKJH()回复于 2006-05-05 20:13:23 得分 0

是的,不过缺点是焦点切换后,程序就没用了Top

13 楼ASDFASFALKJH()回复于 2006-05-05 21:11:44 得分 0

有人会吗Top

14 楼kssys()回复于 2006-05-06 09:05:37 得分 0

用Timer,过一段时间就运行这段程序,可以得到同样的效果。Top

相关问题

关键词

得分解答快速导航

  • 帖主:ASDFASFALKJH

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo