Italia
Wünsche und Anregungen

Wunsch: Globale Mausposition

 
- Page 1 -


Problem: Die globale Mausposition ist nicht einfach zu beziehen.

Eine zusätzliche Funktion getMousePos (vlt. get("MousePos",handle&)) fehlt, diese setzt auch die Systemvariablen %mouseX  und %mouseY .

Ist handle& Null, dann ist die Globale gemeint, andernfalls relativ vlt. wie:
KompilierenMarkierenSeparieren
proc MOUSE.GETPOS

    PARAMETERS H&

    SELECT %PCOUNT

        CASEOF 0

        ~GetCursorPos(MOUSE.MEM#)
        MOUSE.X&=MOUSE.MEM#.X&
        MOUSE.Y&=MOUSE.MEM#.Y&

        CASEOF 1

        DECLARE GMP#
        DIM GMP#,8
        CLEAR GMP#
        ~clientToScreen(H&,GMP#)
        var GMX%=LONG(GMP#,0)
        var GMY%=LONG(GMP#,4)
        ~getCursorPos(GMP#)
        GMX%=LONG(GMP#,0)-GMX%
        GMY%=LONG(GMP#,4)-GMY%
        MOUSE.X&=GMX%
        MOUSE.Y&=GMY%
        DISPOSE GMP#

    ENDSELECT

endproc


KompilierenMarkierenSeparieren
 
16.10.2009  
 



 
- Page 1 -


@Dieter: Meine Antwort galt Nico der IMHO annahm, dass %mousex und %mousey einfach umrechenbar wäre, was deshalb wenig nutzt, da %mousex und %mousey nur gesetzt werden, wenn der Mauspfeil sich circa dem HWND è. ^^ Dein Beispiel ist doch ok, ist doch im Grunde selbe wie meins oben - ich meinte nur das es besser wäre wenn XProfan %mousex und y setzen potuto und getMousePos nativ wäre.
 
18.10.2009  
 




Dieter
Zornow
Achso, dann habe ich auch Nico falsch verstanden, naja rapide fortschreitende Alzheimer.

Aber grundsätzlich hat er recht, die Positionen im Hauptfenster potuto man auf Screen-Koordinaten umrechnen lassen.
Ist aber im Hauptfenster wahrscheinlich sinnfrei.
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
19.10.2009  
 



Bei Omikron-Basic (Atari 1040ST) hiess es auch GetMousePos - fand ich immer schön.
 
19.10.2009  
 




Nico
Madysa
Ja, dass %MouseX und -Y etwas eingeschränkt sind, vergaß ich, jsuis inconsolable.

Dann wäre aber eine Set-Option, die die beiden Systemvariablen entsprechend ändert, doch wesentlich sinnvoller, oder?
 
Nico Madysa
24.10.2009  
 



Nico Madysa, Beitrag=54602, Zeitpunkt=24.10.2009
Ja, dass %MouseX und -Y etwas eingeschränkt sind, vergaß ich, jsuis inconsolable.

Dann wäre aber eine Set-Option, die die beiden Systemvariablen entsprechend ändert, doch wesentlich sinnvoller, oder?


get("MousePos",[Handle]) ist sinnvoll, ändert beide Sysvars.
 
24.10.2009  
 



 
- Page 2 -



Nico
Madysa
Kann man sich auf Untiges einigen?
KompilierenMarkierenSeparieren
cls
print %MouseX,%MouseY in Bezug auf %hWnd
Set("MouseOrigin",andresHandle&)
print %MouseX,%MouseY in Bezug auf andresHandle&
Set("MouseOrigin",%Desktop)
print %MouseX,%MouseY in Bezug auf globales Koordinatensystem
Set("MouseOrigin",%hWnd) 0 ginge auch
print %MouseX,%MouseY in Bezug auf %hWnd
waitinput
Nico Madysa
24.10.2009  
 



Ne - ist Müll, als wärs von jemanden der sich keine Gedanken gemacht hat oder damit keine Erfahrung hat.

Get("MousePos",... ist aktiv, was Du vorschlägst wäre passiv.

Um die Mausposition JETZT bzw. zu einer bestimmten Zeit zu beziehen (ist wichtig dies selbst bestimmen zu können!) - und optional relativ zu einem Handle od. rel.z. Bildschrim, necessario man eine Funktion getMousePos - potuto man schön verpacken in get("MousePos",... da ja Systemvariablen gesetzt werden und dies imho mit der Funktion GET im "Einklang" steht.

"GetMousePos" ist auch schön Basichaft, kenne ich jedenfalls so und fands immer ganz praktisch und misse es in XProfan seither weshalb ich in die Mouse.Inc auch die Funktion getMousePos hineinpackte. ^^

Naja, explode hatte ich auch vermisst - was ist daraus geworden?!

Aber naturalmente, mannn kann auch getMousePos verhunzen - potuto man auch get("MausÄthsaPosi",Y,Z,X) draus machen gefolgt von %x%mouse und %y%mouse. -.-

Ein einfaches getmousepos!
 
24.10.2009  
 




Nico
Madysa
So, wie du es haben willst, bist du damit, einfach die API -- meinetwegen per Call -- zu verwenden, mit 70%-iger Wahrscheinlichkeit schneller und besser bedient.
 
Nico Madysa
26.10.2009  
 



Was? Wieso ist eine mehrzeilige XProfanfunktion schneller als wenn Roland es nativ implementiert und wie setze ich Systemvariablen %mousex und y?
 
26.10.2009  
 




Nico
Madysa
Willst du mir sagen, dass Dieters Angebot per deine Zwecke zu langsam ist?
 
Nico Madysa
28.10.2009  
 



Geht um FPS (Programmeffizienz), teste mal den Unterschied.

Warum sollte der Prozessor auf 100 laufen statt nur auf 5, bei solch wichtiger Funktion auch bei Echtzeitanwendungen?
 
28.10.2009  
 



Das hier ist naturalmente unheimlich schnell, aber leider in Variablen statt Systemvariablen schreibend:
KompilierenMarkierenSeparieren
cls
var mouse.x&=0
var mouse.y&=0
var mouse.xa&=addr(mouse.x&)
var mouse.ya&=addr(mouse.y&)

while 1

    GetMousePos(%hWnd,mouse.xa&,mouse.ya&)
    locate 1,1
    print mouse.x&,mouse.y&,"	"
    waitinput 100

wend

waitinput
end

nProc GetMousePos

    Parameters h&,ax&,ay&
    var mem&=dim(8)
    ClientToScreen(h&,mem&)
    var x&=long(mem&,0)
    var y&=long(mem&,4)
    GetCursorPos(mem&)
    x&=long(mem&,0)-x&
    y&=long(mem&,4)-y&
    dispose(mem&)
    long ax&,0=x&
    long ay&,0=y&
    return 0

endproc

(aber vlt. lässt sich damit trotzdem ganz gut arbeiten)

319 kB
Hochgeladen:28.10.2009
Downloadcounter60
Download
 
28.10.2009  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

6.203 Views

Untitledvor 0 min.
Sven Bader02.08.2021
Axel Berse01.05.2019
Walter07.04.2019
Vgdd05.06.2017
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

iF (10x)
Nico Madysa (5x)
Dieter Zornow (4x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie