Vb6 第二次单击时未调用鼠标按下事件

Vb6 第二次单击时未调用鼠标按下事件,vb6,mouseevent,picturebox,Vb6,Mouseevent,Picturebox,我有一个应用程序,其中我正在一个图片盒上画一条直线/正方形。我还需要用户单击picturebox上的特定点(在绘制正方形/直线后),以便获得第二个点的位置。但是鼠标按下事件在第二次单击时不起作用。我的代码如下所示: Dim m_Drawing As Boolean 'm_Drawing = False Dim m_Startx As Single Dim m_Starty As Single Dim m_endx As Single Dim m_endy As Single Dim square

我有一个应用程序,其中我正在一个图片盒上画一条直线/正方形。我还需要用户单击picturebox上的特定点(在绘制正方形/直线后),以便获得第二个点的位置。但是鼠标按下事件在第二次单击时不起作用。我的代码如下所示:

Dim m_Drawing As Boolean
'm_Drawing = False
Dim m_Startx As Single
Dim m_Starty As Single
Dim m_endx As Single
Dim m_endy As Single
Dim square_click As Boolean
'square_click = False
Dim line_click As Boolean
'line_click = False
Dim bclick As Boolean
'blick = True
Dim startx As Single
Dim starty As Single
Dim endx As Single
Dim endy As Single
Dim laserx_mm As Single
Dim lasery_mm As Single
Dim rectx_mm As Single
Dim recty_mm As Single
Dim xpos As Single
Dim ypos As Single
Dim uxpos As Single
Dim uypos As Single
Dim dist As Single
Dim dist1 As Single

Private Sub Command1_Click()
square_click = True
End Sub

Private Sub Command2_Click()
line_click = True
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim diffx As Single
Dim diffy As Single

Picture1.Cls
If m_Startx = 0 And m_Starty = 0 Then
m_Startx = X
m_Starty = Y
'End If
startx = X
starty = Y
rectx_mm = X
recty_mm = Y
'move to start position
ElseIf m_Startx <> 0 And m_Starty <> 0 Then
laserx_mm = X
lasery_mm = Y

diffx = rectx_mm - laserx_mm
diffy = recty_mm - lasery_mm

dist = xpos + (diffx / 4.74 / 1000)
dist1 = ypos - (diffy / 4.68 / 1000)

End If
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
endx = X
endy = Y
m_endx = X
m_endy = Y
If square_click = True Then
Picture1.Line (m_Startx, m_Starty)-(endx, endy), vbWhite, B
ElseIf line_click = True Then
Picture1.Line (m_Startx, m_Starty)-(endx, endy), vbWhite
End If
End Sub
Dim m_图形为布尔值
'm_Drawing=False
将m_Startx变暗为单个
暗淡的m_星像单身一样
将m_endx变为单个
将m_endy变暗为单身
调暗方形,单击为布尔值
'square_click=False
按布尔值单击尺寸线
'line_click=False
Dim bclick作为布尔值
“blick=True
将startx调暗为单个
像单身一样暗淡的星星
暗端为单端
黯淡如单身
昏暗的激光器x_毫米为单个
单色暗激光
尺寸为mm的矩形,单个
单色暗矩形
将XPO设置为单个
暗淡的YPO为单一
Dim-uxpos作为单个
将uypos设置为单个
单程模糊距离
暗淡的dist1是单一的
专用子命令1_Click()
方形单击=真
端接头
专用子命令2_Click()
行\单击=真
端接头
私有子图片1\u MouseDown(按钮为整数,移位为整数,X为单个,Y为单个)
单色diffx
像单身一样昏暗
图1.Cls
如果m_Startx=0且m_Starty=0,则
m_Startx=X
m_Starty=Y
"完"
startx=X
starty=Y
rectx_mm=X
recty_mm=Y
'移动到起始位置
如果m_Startx 0和m_Starty 0那么
激光X_mm=X
激光毫米=Y
diffx=rectx_mm-激光x_mm
diffy=recty_mm-lasery_mm
dist=xpos+(diffx/4.74/1000)
dist1=ypos-(diffy/4.68/1000)
如果结束
端接头
专用子画面1_鼠标(按钮为整数,移位为整数,X为单,Y为单)
endx=X
endy=Y
m_endx=X
m_endy=Y
如果square\u click=True,则
图1.线(m_Startx,m_Starty)-(endx,endy),vbWhite,B
ElseIf line_click=True然后
图1.线条(m_Startx,m_Starty)-(endx,endy),vbWhite
如果结束
端接头
代码:ElseIf m_Startx 0和m_Starty 0


除非我在那里放置断点,否则不会执行。我不知道为什么会这样。请帮帮我!希望我足够清楚!谢谢。

我在您的
ElseIf m_Startx 0和m_Starty 0中抛出了一个
Debug.Print“我在这里”
调用。如果m_Startx 0和m_Starty 0
…在第二次单击时效果很好。也许你想用深一点的颜色或粗一点的线条?白线很难看到。

我在您的
ElseIf m_Startx 0和m_Starty 0中抛出了一个
Debug.Print“我在这里”
调用。
…在第二次单击时效果很好。也许你想用深一点的颜色或粗一点的线条?白线很难看到。

你怎么知道没有断点它不会被执行?我建议用debug.print语句来修饰代码,以观察流和转储关键变量。另外(与你的问题分开),你有两个变量endx&m_endx和endy&m_endy,它们似乎彼此重复。似乎从这段代码中,你应该去掉endx和endy。嗨,我刚刚做了,是的,没错,它确实有效。但是,是的,正如我在对C磅大师的评论中所说的,正方形被重新绘制到第二个鼠标下降点。所以我不确定出了什么问题。谢谢好的,你所做的一切都是这样改变的:私有子图片1_鼠标(按钮为整数,移位为整数,X为单,Y为单)如果m_endx=0和m_endy=0,那么m_endx=X m_endy=Y如果square_click=True,那么图片1.Line(m_Startx,m_Starty)-(m_endx,m_endy),vbBlack,B ElseIf line_click=True然后Picture1.line(m_Startx,m_Starty)-(m_endx,m_endy),vbBlack End If End If End If End Sub但现在,在第二次单击时,正方形被擦除。不知道为什么。你怎么知道没有断点它不会被执行?我建议用debug.print语句来修饰代码,以观察流和转储关键变量。另外(与你的问题分开),你有两个变量endx&m_endx和endy&m_endy,它们似乎彼此重复。似乎从这段代码中,你应该去掉endx和endy。嗨,我刚刚做了,是的,没错,它确实有效。但是,是的,正如我在对C磅大师的评论中所说的,正方形被重新绘制到第二个鼠标下降点。所以我不确定出了什么问题。谢谢好的,你所做的一切都是这样改变的:私有子图片1_鼠标(按钮为整数,移位为整数,X为单,Y为单)如果m_endx=0和m_endy=0,那么m_endx=X m_endy=Y如果square_click=True,那么图片1.Line(m_Startx,m_Starty)-(m_endx,m_endy),vbBlack,B ElseIf line_click=True然后Picture1.line(m_Startx,m_Starty)-(m_endx,m_endy),vbBlack End If End If End If End Sub但现在,在第二次单击时,正方形被擦除。不知道为什么。嗨,C磅大师,你的权利,它确实有效。但我唯一的问题是我的方块被扩展到了那个点。这是我不想要的。我只想得到第二个鼠标下降点的位置。我不确定我是否走对了方向。。谢谢你的帮助!嗨,C磅大师,你的右边,它确实有效。但我唯一的问题是我的方块被扩展到了那个点。这是我不想要的。我只想得到第二个鼠标下降点的位置。我不确定我是否走对了方向。。谢谢你的帮助!