[AccessD] Screen position of mouse.

Erwin Craps Erwin.Craps at ithelps.be
Fri Sep 19 11:02:41 CDT 2003


Yess, done, works great...
Need to add some code to check if mouse is in lower right corner to
offset the form...


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Erwin Craps
Sent: Friday, September 19, 2003 5:53 PM
To: Access Developers discussion and problem solving
Subject: RE: [AccessD] Screen position of mouse.


Yep this does work.

I already found the solution with the formInfo class that included in 
' From Access 2002 Desktop Developer's Handbook
' by Litwin, Getz, and Gunderloy (Sybex)
' Copyright 2001.  All rights reserved.

That uses pixels to.
I'm adding some code to this class to PositionToMouseCursor...cause i
use this FormInfo all the time.

Thx...
That's another beer or three at my expenses...
That brings the total at 379 beers (or other, same priced, beverages)

Erwin


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Brett
Barabash
Sent: Friday, September 19, 2003 4:56 PM
To: 'Access Developers discussion and problem solving'
Subject: RE: [AccessD] Screen position of mouse.


Unless...
You use the MoveWindow API call to reposition your form.
Here is the code in it's entirety:

Private Declare Function MoveWindow Lib "user32" Alias "MoveWindow"
(ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As
Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long Private
Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal
hwnd As Long, lpRect As RECT) As Long Private Declare Function
GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As
Long

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Type POINTAPI
    x As Long
    y As Long
End Type

Public Sub RepositionForm(frm As Form)

    Dim typPA As POINTAPI
    Dim typRect AS RECT

    'Determine current window dimensions
    GetWindowRect frm.hwnd, typRect

    'Determine mouse cursor position
    GetCursorPos typPA

    'Reposition form to match mouse cursor
    MoveWindow frm.hwnd, typPA.x, typPA.y, (typRect.Right -
typRect.Left), (typRect.Bottom - typRect.Top), 1

End Sub

Easy, done...  I am using code almost identical to this for a custom
popup menu I created.


-----Original Message-----
From: Stuart McLachlan [mailto:stuart at lexacorp.com.pg]
Sent: Friday, September 19, 2003 8:55 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Screen position of mouse.


On 19 Sep 2003 at 14:58, Erwin Craps wrote:

> I can't find how to know the postition of the mouse on the screen.
>  
> I have a pop-up form I want to pop-up at the same place as where the
> mouse cursor is at that time. So I want to put put the code in the 
> on_open event of the pop-up form in question
>  
> lngMouseLeft = ???.Left
> lngMouseTop = ???.Top
>  
> me.move lngMouseLeft, lngMouseTop
> 

It gets quite tricky.  You can find the current mouse position in 
pixels easily enough:

In a module:
Type POINTAPI
  x As Long
  y As Long
End Type
Declare Function GetCursorPos Lib "USER32.DLL" (lpPoint As POINTAPI) 
As Long

In your event:
Dim mptr As POINTAPI
Dim result As Long
result = GetCursorPos(mptr)
Msgbox "Mouse is at Screen position " & mptr.x & " : " & mptr.y & " 
in pixels"

However, that doesn't really help.

Forms are positioned in twips relative to their parent (usually the 
main application window).

You need to get a handle to the parent window  using the 
GetActiveWindow() and GetWindow() API calls then get the location of 
that window using GetWindowPlacement.

Then you need to convert these pixel figures to twips and use 
Docmd.MoveSize to place the from at an appropriate position within 
it's parent.


 
-- 
Lexacorp Ltd
http://www.lexacorp.com.pg
Information Technology Consultancy, Software Development,System 
Support.



_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

------------------------------------------------------------------------
--------------------------------------------
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they are
addressed. If you have received this email in error please notify the
originator of the message. This footer also confirms that this email
message has been scanned for the presence of computer viruses.

Any views expressed in this message are those of the individual sender,
except where the sender specifies and with authority, states them to be
the views of Tappe Construction Co.

Scanning of this message and addition of this footer is performed by
SurfControl E-mail Filter software in conjunction with 
virus detection software.

_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com


More information about the AccessD mailing list