BlitzUI - DrawMouse()

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

martin_moehler

Betreff: BlitzUI - DrawMouse()

BeitragFr, März 27, 2009 0:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich bastle wieder an meinem Mapeditor weiter und brauche Hilfe bei einem BlitzUI Problem.

Ich benutze für das Programm die integierte Mouse-Anzeige über den Befehl DrawMouse(). Wenn die Maus das Fenster meines Programmes verlässt wird diese dann allerdings weiter im Programm gezeigt, sodass ich zwei Maus-Symbole habe. Eine in meinem Programm und eine von Windows. Ich habe versucht eine Abfrage zu machen:
Code: [AUSKLAPPEN]
 
If MouseX() > 1 Then DrawMouse()
...


und habe gehofft, dass Sobal die Maus das Fenster verlässt, die Maus aus dem Programm nicht mehr gezeichnet wird. Bei schnellen Mausbewegungen überspringt der MouseX()-Wert allerdings bis zu 120 Pixel, sodass die Abfrage weiterhin erfüllt bleibt.

Ich hoffe, es hat jemand eine Idee wie ich diese Problem lösen klann!

MFG Martin

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, März 27, 2009 0:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe leider keinen Eintrag mehr hier im Forum finden können. Daher poste ich mal eine Version die ich verwende:

Code: [AUSKLAPPEN]
;.lib "user32.dll"
;
;api_GetCursorPos% (lpPoint*) : "GetCursorPos"
;api_GetWindowRect% (hwnd%, lpRect*) : "GetWindowRect"




Graphics 400,400,0,2
SetBuffer BackBuffer()

Local Timer=CreateTimer(60)




While Not KeyHit(1)
   Rect 100,100,200,200,MOW()
   WaitTimer Timer
   Flip 0
   Cls
Wend
End




Function MOW()
   
   Local AppHWND%=SystemProperty("APPHWND")
   Local MOWMain%=CreateBank(08)
   Local MOWRect%=CreateBank(16)
   
   api_GetCursorPos MOWMain
   api_GetWindowRect AppHWND,MOWRect
   
   Local MOWMX%=PeekInt(MOWMain,00)
   Local MOWMY%=PeekInt(MOWMain,04)
   Local MOWX1%=PeekInt(MOWRect,00)
   Local MOWY1%=PeekInt(MOWRect,04)
   Local MOWX2%=PeekInt(MOWRect,08)-MOWX1
   Local MOWY2%=PeekInt(MOWRect,12)-MOWY1
   
   FreeBank MOWMain
   FreeBank MOWRect
   
   Return RectsOverlap(MOWMX,MOWMY,1,1,MOWX1,MOWY1,MOWX2,MOWY2)
   
End Function



Die auskommentierten Zeilen musst du allerdings ohne den ; zu beginn in eine Textdatei speichern und es als irgendwas.decls in dein Userlibs-Ordner speichern. Diesen Ordner findest du da, wo auch dein Blitz3D installiert ist --> ..\Blitz3D\Userlibs\..
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

martin_moehler

BeitragFr, März 27, 2009 1:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die schnelle Antwort! Very Happy

Funktioniert problemlos! Nur Ich hab immernioch die doppelte Maus, wenn die Maus sich nun auf dem Windows-Teil des Fensters befindet also Überschrift und Seitenumrandung!
Ich probiers aber auch selbst noch weiter!

Danke nochmal

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, März 27, 2009 2:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Also die Funktion MOW() liefert eine 0 oder eine 1 zurück. Eine 1, wenn sich die Maus über dein Programm befindet. Was du nun mit dieser Abfrage machst, ist deine Sache. Empfehlenswert wäre dann eben: If MOW() Then dEiNzEuG
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

martin_moehler

BeitragFr, März 27, 2009 3:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ja schon klar und das funktioniert ja auch! Ich guck einfach selber noch wie ichs mache!
Danke
LG MArtin

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group