Solved

# Return (x,y) values of 6 clicked locations

Posted on 1998-06-22
186 Views
I have a PictureBox control opened.

Then, here's what I need to do (Instructions in Human Language) :

1. Click on 6 different locations on the PictureBox using my mouse
button

2. Return the X,Y coordinates of each of the 6 locations and store them
in 2 one-dimension arrays namely,    Dim x(1 to 6), y(1 to 6) as Integer

Really glad if you could help.

0
Question by:xoooox
• 2

LVL 1

Accepted Solution

kesonline earned 100 total points
ID: 1463998
This should be very easy. Here's what you do (i'm assuming you want pixel locations, not twips):
Create a form (frmMain) with two command buttons (cmdStart, cmdShow), a listbox (lstPoints), and a picturebox (picPoints) with scalemode set to pixels (3).
Here's the basic code:
(this is general declarations)
Dim ptsX(1 To 6) As Integer
Dim ptsY(1 To 6) As Integer
Dim clicking As Boolean
Dim clicks As Integer

Private Sub cmdShow_Click()
lstPoints.Clear
For i = 1 To 6
lstPoints.AddItem CStr(ptsX(i)) + "," + CStr(ptsY(i))
Next i
End Sub

Private Sub cmdStart_Click()
clicking = True

End Sub

clicks = 0
End Sub

Private Sub picPoints_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If clicking Then
Beep
clicks = clicks + 1
ptsX(clicks) = X
ptsY(clicks) = Y
End If
If clicks = 6 Then
clicks = 0
clicking = False
cmdShow_Click
End If
End Sub

0

LVL 9

Expert Comment

ID: 1463999
xoooox,
Try the following. If you have questions, let me know.
Regards
Dalin

'1. declaration:

Private Type POINTAPI
x As Long
y As Long
End Type

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Dim p As POINTAPI
Static clickCount as Integer
If ClickCount = 0 then clickcount = 1
If clickCount >6 then
'Do what you like, reset or just exit
' I am reset it
Clickcount = 1
End if
Call GetCursorPos( p )
x(clickcount) = p.x
y(clickCount)= p.y

0

LVL 1

Expert Comment

ID: 1464000
Question for Dalin - why the whole big POINTAPI stuff - you don't need any API calls for this program. Just wondering...
0

## Featured Post

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…