我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

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 '声明转换要用到的变量

GetCursorPos(P) '获取鼠标在屏幕中的位置

ScreenToClient(Me.Handle.ToInt32, P) '转换为本窗体的坐标

xx = P.x.ToString '把X转换成能显示到文本框的字符串格式

yy = P.y.ToString '把Y转换成能显示到文本框的字符串格式

TextBox1.Text = xx + "和" + yy '文本框的内容为X坐标和Y坐标

End Sub

如何通过vb.net WinForm窗体上画线条或弧线,让用户可以用鼠标捕捉(选中)已画的线条。

代码写起来可能比较麻烦,给你个思路,就是用GraphicsPath来绘制,然后通过绘制目标的鼠标移动事件来获取当前鼠标在绘制目标中的实际位置,再通过GraphicsPath的IsVisible()方法来确认鼠标是否包含在GraphicsPath中。

DrawLine直线比较容易处理,只要得到Line的坐标点,然后比较当前鼠标坐标就好。

vb.net 如何获取picturebox或者panel传递过来的消息?简单来讲就是如何捕获那些鼠标事件?

VB.NET里

如果要向非托管函数传递函数地址,需要传递一个委托对象,封送拆收器会自动把它转化为非托管函数指针。

所以,

首先要根据要传递的函数——WndMessage定义对应的委托类型:

(注意vb.net里面的Integer是32位,相当于vb6的Long)

Public Delegate Function WndProceDelegate(hwnd As Integer, msg As Integer, wp As Integer, ip As Integer) As Integer

然后SetWindowLong最后一个参数的类型要改成上面定义的委托类型:

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (hwnd As Integer, nIndex As Integer, dwNewLong As WndProceDelegate) As Integer

调用的时候创建委托对象:

SetWindowLong(handle,GWL_WNDPROC,New WndProceDelegate(AddressOf WndMessage))

不过这里还有一个问题,封送拆收器只保证在平台调用期间委托对象不会被回收。所以一旦SetWindowLong执行完毕,你创建的委托对象就有可能被回收掉。可以用一个非局部变量(比如字段,静态变量)来引用要传递的委托对象,这样就不会被回收。

--------------------------------------------------------------------------------------------------------

另外,你可以直接继承要接受相关消息的空间,重写WndProce。

Public Class MyPanel : Inherits Panel

Protected Overrides Sub WndProc(ByRef m As Message)

Select Case m.Msg

Case WT_PACKET

Case Else

MyBase.WndProc(m)

End Select

End Sub

End Class

求VB.NET怎么捕捉系统鼠标当前状态?如:打开文件等待时的漏斗状态,或双箭头的可拉伸状态,谢谢。

me.Cursor.ToString()

或者可以枚举

me.cursor=Cursors.WaitCursor之类的

不过有以下局限:

自定义指针无法识别

窗口处于非激活状态可能无效

与其他控件可能冲突

vb.net 怎样获取鼠标单击点的坐标

通过窗体的MouseDown事件的e.X和e.Y属性获取。通过e.Location属性获取Point类型的坐标。

下面的代码示例使用 Location 属性跟踪鼠标左键单击,并绘制一系列直线段作为对用户输入的响应。如果隐藏窗体然后重新显示它,此示例不保留已绘制的线段,该代码为简单起见而被省略了。

Dim FirstPoint As Point

Dim HaveFirstPoint As Boolean = False

Sub Form1_MouseDownDrawing(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown

If HaveFirstPoint Then

Dim g As Graphics = Me.CreateGraphics()

g.DrawLine(Pens.Black, FirstPoint, e.Location)

HaveFirstPoint = False

Else

FirstPoint = e.Location

HaveFirstPoint = True

End If

End Sub


名称栏目:vb.net鼠标捕获,vb 鼠标点击
分享URL:http://mswzjz.cn/article/dsioeig.html

其他资讯