absolut feste mausposition

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

sidolin

Betreff: absolut feste mausposition

BeitragSa, Feb 07, 2004 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
hi.
folgendes problem. ich will die maus beim drücken der linken maustaste auf eine feste position bringen.
mit MoveMaus x,y geht das aber nur relativ.
leider kann man die maus immer noch von dieser festgelegten position wegbewegen.
bei mausbewegung, springt sie sozusagen von ihrer angeblich festen position weg.

hier mal ein test-code:
Code: [AUSKLAPPEN]
Graphics3D 640,480,0,2
SetBuffer BackBuffer()

Repeat

   If MouseDown(1) Then MoveMouse 320,240   

 UpdateWorld
 RenderWorld
 Flip

Until KeyHit(1)

hat jemand eine idee für eine absolut feste mausposition, bei der die maus sich nicht um einen pixel wegbewegt ?

Xenon

BeitragSa, Feb 07, 2004 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
das geht mir BB nicht direkt.

Wenn du das wegen der Mausposition dann brauchst (MouseX, MouseY) würde ich da seperate variablen nehmen, die nur wenn MouseDown(1) = False auf MouseX() und MouseY() gesetzt werden.

Aber warum schreibst du das in 3D Graphics?

Mfg Xenon
 

IonPainter

BeitragSa, Feb 07, 2004 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
mauskontrolle.decls:
Code: [AUSKLAPPEN]

.lib "user32.dll"
SetCursorPos%(x,y) : "SetCursorPos"
GetCursorPos%(lpPoint) : "GetCursorPos"
Mouse_Event%(dwFlags, dx, dy, cButtons, dwExtraInfo) : "mouse_event"


mauskontrolle.bb:
Code: [AUSKLAPPEN]

Const MOUSEEVENTF_MOVE$ = $1
Const MOUSEEVENTF_LEFTDOWN$ = $2
Const MOUSEEVENTF_LEFTUP$ = $4
Const MOUSEEVENTF_RIGHTDOWN$ = $8
Const MOUSEEVENTF_RIGHTUP$ = $10
Const MOUSEEVENTF_MIDDLEDOWN$ = $20
Const MOUSEEVENTF_MIDDLEUP$ = $40
Const MOUSEEVENTF_ABSOLUTE$ = $8000

Graphics 1,1

While Not KeyHit(1)
If JoyXDir() = 1 Then move_mouse(1,0)
If JoyXDir() = -1 Then move_mouse(-1,0)
If JoyYDir() = 1 Then move_mouse(0,1)
If JoyYDir() = -1 Then move_mouse(0,-1)

If JoyHit(1) Then Left_Click()

hWnd = CallDLL("User32.dll","GetActiveWindow")
Result = SetWindowPos(hWnd,-1,0,0,0,0,3)
FlushMouse

Delay 1
Wend



;Funktionen:
;Left_Click(anzahl der Klicks)
;Right_Click(anzahl der Klicks)
;Middle_Click(anzahl der Klicks)
;Move_Mouse(x,y) BEWEGT die Maus
;Position_Mouse(x,y) POSITIONIERT die Maus


Function Left_Click(clicks=1)
   For counter = 1 To clicks
      Mouse_Event(MOUSEEVENTF_LEFTDOWN$,0,0,0,0)
      Mouse_Event(MOUSEEVENTF_LEFTUP$,0,0,0,0)
   Next
End Function

Function Right_Click(clicks=1)
   For counter = 1 To clicks
      Mouse_Event(MOUSEEVENTF_RIGHTDOWN$,0,0,0,0)
      Mouse_Event(MOUSEEVENTF_RIGHTUP$,0,0,0,0)
   Next
End Function

Function Middle_Click(clicks=1)
   For counter = 1 To clicks
      Mouse_Event(MOUSEEVENTF_MIDLLEDOWN$,0,0,0,0)
      Mouse_Event(MOUSEEVENTF_MIDDLEUP$,0,0,0,0)
   Next
End Function

Function Move_Mouse(mouse_x,mouse_y)
   Mouse_Event(MOUSEEVENTF_MOVE$,mouse_x,mouse_y,0,0)
End Function

Function Position_Mouse(mouse_x,mouse_y)
   SetCursorPos(mouse_x,mouse_y)
End Function


ist ein beispiel für eine joystick maus...

Markus2

BeitragSo, Feb 08, 2004 5:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde den Windowsmauspointer ausblenden und
selber einen mit nem Image zeigen .
So kannste dann selbst bestimmen wo der stehen (bleiben) soll .

TheShadow

Moderator

BeitragSo, Feb 08, 2004 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
mach hidepointer und dann verwende deinen eigenen image-zeiger

if freibewegbar=1 then
x=mousex()
y=mousey()
endif
drawimage maus,x,y

x und y kannst du auch manuell setzen...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

sidolin

BeitragSo, Feb 08, 2004 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
okay, hab jetzt ne lösung gefunden. danke an alle.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group