问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C#怎样限定鼠标移动范围只能在一窗体内

发布网友 发布时间:2022-05-11 21:15

我来回答

1个回答

热心网友 时间:2023-10-20 19:43

Option Explicit'注意在API都是使用坐标系统为Pixel(像素),所以我们必须先确定我们返回的是
'像素还是缇单位,一般默认的就是缇,所以这里我们就使用缇'作用:限定光标范围(这里用到了一个结构,在MSND上有,一个矩形区域)
Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long'作用:取得标题栏的高度
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long'矩形区域结构
Private Type RECT
Left As Long '左上角X坐标
Top As Long '左上角Y坐标
Right As Long '右上角X坐标
Bottom As Long '右上角Y坐标
End TypePrivate Const SM_CYCAPTION = 4 ' Height, in pixels, of a normal caption area
'高度,用像素表示:一个正常标题栏区域的高度Private Sub Command1_Click()
Dim rec As RECT
Dim Heigth_Caption As Long '标题栏的高度,在这里是返回的像素,注意!

Heigth_Caption = GetSystemMetrics(SM_CYCAPTION) '得到系统标题栏的高度
'把默认的缇单位转换为像素单位
With rec
'左上角X坐标:等于按钮的left的坐标加上窗体的坐标(按钮的坐标只是相对窗体本身来说) '为什么要加标题栏的高度?我们可以把其去掉,这样我们运行程序时,总发现光标的移动范围 '总在控件的上方,于是得到肯定坐标不准确,但是X坐标是准确的,就是Y坐标不准确,而且就 '在上方,仔细发现其大致高度就和标题栏的高度相当,于是大胆猜测可能是由于标题栏引起的, '于是加上这个标题栏高度,哇,成功了!
.left= (Command1.Left + Me.Left) / Screen.TwipsPerPixelX
.Top = ((Command1.Top + Me.Top) / Screen.TwipsPerPixelY) + Heigth_Caption
.Right = (Command1.Width + Command1.Left + Me.Left) / Screen.TwipsPerPixelX
.Bottom = ((Command1.Height + Command1.Top + Me.Top) / Screen.TwipsPerPixelY) + Heigth_Caption
End With

'限定光标范围
ClipCursor rec
End Sub
'限定光标在窗体里面移动,而不是在窗体的控件里
With rec
.Left = me.Left / Screen.TwipsPerPixelX
.Top = me.Top / Screen.TwipsPerPixelY
.Right = (me.Left + me.Width) / Screen.TwipsPerPixelX
.Bottom = (me.Top +me.Height) / Screen.TwipsPerPixelY
End With
ClipCursor rec'恢复光标的移动范围(全屏都可以)
With rec
'左上角X坐标:等于按钮的left的坐标加上窗体的坐标(按钮的坐标只是相对窗体本身来说)
.Left = 0
.Top = 0
.Right = Screen.Width / Screen.TwipsPerPixelX
.Bottom = Screen.Height / Screen.TwipsPerPixelY
End With

'限定光标范围
ClipCursor rec 重生神犬最新章节在线阅读 http://www.xslxb.cn/files/article/html/23/23701/index.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
孕期生气对身体的危害有多大呢? 怀孕期间经常生气会造成哪些严重的后果? 孕期生气吵架对胎儿的影响有哪些? 孕妇怀孕初期生气有什么坏处 南通启程海洋工程有限公司怎么样? 南通启程收费具体情况? 南通启程卫校是公办吗 南通启程卫校学什么 CAD标注尺寸与实际尺寸不符?是不是它的问题? 请问什么格式的视频可以导入苹果4s里面去? 鼠标在固定区域出不去 VB 如何禁止鼠标移动到某个控件的范围内? VB怎样限制鼠标的移动范围? 感恩老师的作文50字 vb使用api限定鼠标的移动范围? 在Windows下能不能设置鼠标移动的范围 js怎么控制鼠标移动范围 怎样限制鼠标移动 为什么我的鼠标被限制在一个范围移动? 弓和只能组成什么字 火字换一笔变成什么字 只能换一笔不能加或减笔划 合肥哪有甜面酱买 欣和甜面酱到那买 请问芷江鸭专用甜面酱在哪里买得到 送给喜欢的人中国结如果只能变一个字要变什么字? 也字只能加一笔变成什么字 请问武汉哪里能买到北京的六必居甜面酱? 炸洋葱圈外层裹的面糊怎么弄更好啊?还有甜面酱一般到哪里买呢? 无锡甜面酱哪有卖 言和只能组成什么字 如何在方屏的war3画面中,*鼠标指针的自由移动范围使其不进入两侧黑边? 感谢老师的作文五十字完整版 感恩老师的作文70字,加格式 新手提问,为什么我的鼠标只能在一个范围里移动 感恩老师的作文怎么写 请大师帮帮忙起名字 我想下载一个,不知道怎么怎么下载? 德邦净水器的滤芯是用水冲洗的还是需要换的? 梦到房子被水淹 如何判断滤芯是清洗还是更换,净水器滤芯清洗,万师傅 手机怎么下载 从10首古诗中选出一句带有黄字的古诗或名句 诗句中带黄字跟燕字的诗 京东退款中两天了,还在退款中什么意思 我在京东买东西,然后申请退款。为啥申请进度是取消处理中?然后客服老是不理人 绿萝出现叶尖发黄发黑是什么原因,该怎样处理 绿萝叶尖发黑怎么办 绿萝叶尖发黑怎么办? 绿萝新叶子发黑像烧焦 龟和鳖有什么区别?怎样区别?