| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 701 人关注过本帖
标题:vb.net 谁能帮我把这个获取鼠标位置的模块给改成.net 的模块啊?谢谢了
只看楼主 加入收藏
wxmtgg
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-2-17
结帖率:0
收藏
 问题点数:0 回复次数:3 
vb.net 谁能帮我把这个获取鼠标位置的模块给改成.net 的模块啊?谢谢了
模块内容:
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Function SetCapture Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long

Public Type POINTAPI
    X As Long
    Y As Long
    End Type

Public Function GetX() As Long
    Dim n As POINTAPI
    GetCursorPos n
    GetX = n.X
End Function
'Download by http://www.
Public Function GetY() As Long
    Dim n As POINTAPI
    GetCursorPos n
    GetY = n.Y
End Function

窗体内容:

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim MouseExit As Boolean
    MouseExit = (0 <= X) And (X <= Picture1.Width) And (0 <= Y) And (Y <= Picture1.Height)
    If MouseExit Then
        Label3.Caption = "鼠标进入了图片"
        SetCapture Picture1.hWnd
    Else
        Label3.Caption = "鼠标离开了图片"
        ReleaseCapture
    End If
End Sub

Private Sub Timer1_Timer()
    Dim n As POINTAPI
    GetCursorPos n
    Text1.Text = n.X
    Text2.Text = n.Y
End Sub


求帮我改成语言,谢谢了!
2014-05-16 19:36
油盐酱醋
Rank: 2
等 级:论坛游民
威 望:2
帖 子:19
专家分:47
注 册:2007-4-5
收藏
得分:0 
很简单,处理PictureBox的几个事件就行。

鼠标进入PictureBox,对应的是PictureBox的MouseEnter事件。
鼠标离开,对应的是MouseLeave事件。
鼠标在PictureBox上移动,对应的是MouseMove事件。

这三个MouseXXX事件的参数e都带有X和Y属性(就是e.X和e.Y),就是鼠标的位置。

看着这段程序,真心觉得那时候vb编起来真难啊。
2014-05-16 22:38
wxmtgg
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-2-17
收藏
得分:0 
回复 2 楼 油盐酱醋
Dim n As POINTAPI
    GetCursorPos n
    Text1.Text = n.X
    Text2.Text = n.Y

这段用怎么表达啊?
2014-05-17 09:09
油盐酱醋
Rank: 2
等 级:论坛游民
威 望:2
帖 子:19
专家分:47
注 册:2007-4-5
收藏
得分:0 
首先,.net框架里有一个叫“Point”的结构,位于System.Drawing下,用起来就是System.Drawing.Point,完全替代了你代码里的那个POINTAPI自定义结构。

其次,GetCursorPos这个方法是API,.net框架里不要用这个API也可以获取鼠标位置。在定义一个方法用来Handles picturebox.MouseMove时,这个方法必须拥有两个参数才能实现Handle住MouseMove事件。这两个参数一个是object类型的,另一个是MouseEventArgs类型的。后一类型的这个参数含有X和Y两个属性,就是鼠标的横坐标和纵坐标。

程序代码:
Private WithEvents pic1 As PictureBox

Private MousePos as Point

Private Sub OnPicMouseMove(sender as Object, e as MouseEventArgs) Handles pic1.MouseMove

    MousePos.X = New Point( e.X, e.Y )
    TextBox1.Text = MousePox.X
    TextBox2.Text = MousePos.Y

End Sub

2014-05-17 11:15
快速回复:vb.net 谁能帮我把这个获取鼠标位置的模块给改成.net 的模块啊?谢谢了 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030500 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved