DesktopMouseX/Y?

BlitzMax Forums/BlitzMax Beginners Area/DesktopMouseX/Y?

Is there a way to *get* the mouse position values that you can set with MoveMouse()?

GadgetX(Desktop()) ought to work, but last time I checked, it didn't.

MaxGUI
Global MX:Int;MY:Int
Select EventID()
   Case Event_MouseMove
	MX=EventX()
	MY=EventY()
End Select


Strict 

Local window:TGadget

window=CreateWindow("My Window",40,40,320,240)
Local P:TGadget = CreatePanel(0,0,ClientWidth(window),ClientHeight(window),Window,PANEL_ACTIVE)
While True

	WaitEvent 
	Print CurrentEvent.ToString()
	Select EventID()
		Case EVENT_WINDOWCLOSE
			End
		Case EVENT_MOUSEMOVE
			SetStatusText(window,EventX()+ ":" + EventY() )
		Case EVENT_WindowSize
			SetGadgetShape(P,0,0,ClientWidth(window),ClientHeight(window))
	End Select
Wend


No, no, not inside the application window - on the Desktop. I want to move a window to where the mouse is, and to do that I need the mouse's co-ordinates relative to the top left corner of the screen. Adding GadgetX/Y to window co-ordinates won't help because it won't be offset by the size of the window title bar/edge. There should be a way to do this, MoveMouse can *set* the values.

Edit: Also, klepto:
		Case EVENT_WindowSize
			SetGadgetShape(P,0,0,ClientWidth(window),ClientHeight(window))

Another way to do this (though you might already know and prefer to do it your way) is:
SetGadgetLayout P,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED

...once, after you create it.

Yes, I alread know that, but forget it with this sample.
Maybe, this is what you are looking for:

Win32 only:
Strict 

Local window:TGadget
Global PT: POINT = New POINT

GetCursorPos_( pt )

window=CreateWindow("My Window",pt.x,pt.y,200,300)


While True
	GetCursorPos_( pt )
	SetStatusText(Window,pt.x + " : " + pt.y)
	
	WaitEvent 
	
	Print CurrentEvent.ToString()
	Select EventID()
		Case EVENT_WINDOWCLOSE
			End
	End Select
Wend

?Win32
	Extern "Win32"
		Function GetCursorPos_(lpPoint:Byte Ptr) = "GetCursorPos@4"
	End Extern
?

Type POINT
	Field x%
	Field y%
End Type


Aha! Yeah, that looks like it, thank you. Surely Cocoa and FLTK have equivalent functions, this should be made an official function...

What about getting the screen position of gadgets, is that as easy? I suppose I could iterate back through using GadgetGroup(), adding up all the GadgetX()'s, but that would still have the titlebar/sidebar problem.