如何将光标限制在窗体范围内移动,光标不能移出窗体
小弟水平不高,请各位大哥给出详细代码,万分感谢 问题点数: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




