VB API中有没有识别鼠标状态的函数

我想在Picture控件中画一条有橡皮筋功能的直线,不想在VB的Picture1_MouseUp、Picture1_Mousedonw、Picture1_MouseMov... 我想在Picture控件中画一条有橡皮筋功能的直线,不想在VB的Picture1_MouseUp、Picture1_Mousedonw、Picture1_MouseMove中写代码,想把整个代码写到自定义的一个函数中,可是不知道API中有没有识别鼠标是在按下左键、移动、放开左键状态的函数,如果有,怎么使?对于能提供正确代码的网友先谢谢了!
这是我整的,但是运行时不对,在PICTURE上画线时,画出的线不是鼠标按下时的起点和终点,而且当鼠标移动时的那段橡皮筋代码不知怎么加了
Option Explicit

Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Type POINTAPI
X As Long
Y As Long
End Type
Dim MousePos As POINTAPI
Dim startx, starty, endx, endy As Single
Dim line_state As Single
Private Sub Picture2_Click()
Call draw_line
End Sub

Private Sub draw_line()
If line_state = 1 Then
GetCursorPos MousePos
ClientToScreen Picture2.hwnd, MousePos
Picture2.AutoRedraw = False
startx = MousePos.X '记住起始点
starty = MousePos.Y
line_state = 2
ElseIf line_state = 2 Then '第二次单击记往终点
GetCursorPos MousePos
ClientToScreen Picture2.hwnd, MousePos
endx = MousePos.X '记住终止点
endy = MousePos.Y
Picture2.AutoRedraw = True
Picture2.Line (startx, starty)-(endx, endy) '最终画线
line_state = 1
Text3.Text = endx
Text4.Text = endy
End If
橡皮筋状态

End Sub
展开
 我来答
百度网友4684e1e
2011-08-20 · TA获得超过2309个赞
知道小有建树答主
回答量:1266
采纳率:0%
帮助的人:554万
展开全部
VB事件里面有 MOUSE UP 和MOUSE DOWN 事件,就是鼠标按下事件。有一个参数BUTTON
1为左键。2为右键,3为中间键。
可以在里面加入
IF BUTTON =1 THEN
MSGBOX "你按下了鼠标左键!"
END IF
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
腾贤两h
2011-08-20 · TA获得超过1084个赞
知道小有建树答主
回答量:281
采纳率:0%
帮助的人:142万
展开全部
路过,菜鸟提示:
不如用在MOUSE DOWN的过程中写下GetCursorPos的API,赋值到A1 As POINTAPI中,再在同一过程中把第二次按下的值赋到A2 As POINTAPI,用着两点写程序即符合你说的写在一个过程中,还不麻烦
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式