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. |