
正文
vb.net窗口鼠标 vb如何控制鼠标
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
在VB.net中怎么获取 鼠标在屏幕中的坐标
Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Long '全屏坐标声明
Private Declare Function ScreenToClient Lib "user32.dll" (ByVal hwnd As Int32, ByRef lpPoint As POINTAPI) As Int32 '窗口坐标声明
Private Structure POINTAPI '声明坐标变量
Public x As Int32 '声明坐标变量为32位
Public y As Int32 '声明坐标变量为32位
End Structure
'以上是声明部分
'以下是窗口部分
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick '用时钟控件来取坐标,窗口上放个Timer组件,Enabled为允许,周期为10到100毫秒均可
Dim P As POINTAPI '声明坐标变量
Dim xx, yy '声明转换要用到vb.net窗口鼠标的变量
GetCursorPos(P) '获取鼠标在屏幕中vb.net窗口鼠标的位置
ScreenToClient(Me.Handle.ToInt32, P) '转换为本窗体vb.net窗口鼠标的坐标
xx = P.x.ToString '把X转换成能显示到文本框vb.net窗口鼠标的字符串格式
yy = P.y.ToString '把Y转换成能显示到文本框vb.net窗口鼠标的字符串格式
TextBox1.Text = xx + "和" + yy '文本框的内容为X坐标和Y坐标
End Sub
相关问答
Q1: VB.net如何让窗体在鼠标点击出显示
没听懂你的意思。如果你是想做一个像右键菜单效果的话,你可以在鼠标点击事件中获取鼠标位置,然后创建你要显示窗体的实例,把窗体的left 和 top 设成鼠标的x,和y 坐标就可以了,具体获取鼠标坐标的方法大至有2种,一种是.net 自带的,你找一找 Screen 这个对象中的属性,能找到获取鼠标坐标的方法,别一种就是用API函数获取鼠标的坐标,GetCursorPos ,该 API 具体使用方法和声明请在网上查找一下。如果有什么问题,可以再联系我。
Q2: Vb.Net 怎么让窗口随鼠标动
新建一窗体FORM2,在原窗体FORM1的在mousemove事件中增加FORM2.left=XX,FORM2.TOP=YY.XX,yy是鼠标的坐标.
Q3: VB.NET怎么可以限制窗体不能被鼠标随便拖动位置
很简单,通过WindowsAPI,删除窗体菜单项就行vb.net窗口鼠标了
首先在窗体类中声明API:
Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
Declare Function RemoveMenu Lib "user32" (ByVal lngHmenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
其次声明API参数常量:
Const MF_BYPOSITION As Integer = H400
然后在窗体类中写入过程:
Private Sub UserForm_Initialize_stopmove() '禁止窗体移动
Dim lngHwnd As IntPtr
Dim lngHmenu As IntPtr
lngHwnd = Me.Handle
If lngHwnd 0 Then
lngHmenu = GetSystemMenu(lngHwnd, False)
RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '这里的0代表菜单中从上往下数第一个菜单项
End If
End Sub
Private Sub UserForm_Initialize_onmove() '恢复窗体移动
Dim lngHwnd As IntPtr
Dim lngHmenu As IntPtr
lngHwnd = Me.Handle
If lngHwnd 0 Then
lngHmenu = GetSystemMenu(lngHwnd, True)
RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '这里的0与禁止代码中的数值同步,原因时虽然表面上删除vb.net窗口鼠标了菜单项,实则为隐藏了菜单项,各个菜单的索引值并没有变,所以0依然代表初始菜单的第一个菜单项,即被删除的那个菜单项
End If
End Sub
然后如果vb.net窗口鼠标你的窗口菜单是动态变化的,建议声明常数:
Const MF_BYPOSITION As Integer = H0
然后使用相关的Windows功能的常数进行删除菜单。常数需要自行查看winuser.h头文件
如果找不到该头文件,可以看这里:网页链接
其余信息详见MSDN:网页链接
最后说一下,不建议前面网友说的重写WndProc的方法,因为这样拦截标题栏点击消息会导致窗体本身的菜单也无法显示出来,有损窗体功能,并且像双击左上角图标关闭窗体这样的功能也会跟着拦截消息的操作一起被吞掉。
关于vb.net窗口鼠标和vb如何控制鼠标的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







