Seite 1 von 1

Mousepointer über einem Windowes Screen auswechseln

Verfasst: 09.06.2006 10:07
von Kurzer
Huhu...

wie kann ich in PB die Grafik des Mousepointer ändern.

Ich möchte, das der Pointer sich ändert, sobald die Mouse über den
WindowedScreen Bereich meines Programmfensters geschoben wird.

Irgendwie habe ich da nix zu gefunden. :(

Gruß Markus

Verfasst: 09.06.2006 10:22
von Kaeru Gaman
hab ich letztens erst gemacht, sitz aber im moment nich zuhause, also, ich probier mal, das so zusammenzustoppeln, ohne code...

du kannst mit WindowMouseX() und..Y() die mauskoordinaten über dem screen abfragen.
wenn die maus den screen verlässt, ist die rückgabe -1.

ShowCursor kannst du benutzen, um den originalen mauszeiger zu verstecken.
weiß jetzt nicht genau, war glaubich ne API, findest du aber auch über die forensuche...

also, wenn die maus im screen ist, orginal-zeiger verstecken und sprite anzeigen.

eigentlich recht easy... ;)

Verfasst: 09.06.2006 13:19
von Kurzer
Cool, dem geht! :allright: ;)

Code: Alles auswählen

Procedure ShowMouse()
  Protected X.l, Y.l
  Static Cursor.l = #True
  
  X = WindowMouseX(#MainWindow)
  Y = WindowMouseY(#MainWindow)

  If (X = -1 Or Y = -1) And Cursor = #False ; Wenn die Maus ausserhalb des Fenster ist...
    Cursor = #True : ShowCursor_(Cursor)
  Else
    If (X > ScreenWidth Or Y > ScreenHeight) And Cursor = #False
      Cursor = #True : ShowCursor_(Cursor)
    ElseIf ((X >= 0 And X < ScreenWidth) And (Y >= 0 And Y < ScreenHeight)) And Cursor = #True
      Cursor = #False : ShowCursor_(Cursor)
    EndIf
    If X > -1 And Y > -1 And X <= ScreenWidth Or Y <= ScreenHeight
      DisplayTransparentSprite(#MousePointer, X - 32, Y - 14)
    EndIf
  EndIf

EndProcedure
Und... meine erste API Funktion, die ich benutze. :lol:

Gruß Markus

PS: Was ich noch nicht wusste. Windows hat einen Counter für den ShowCursor! Wenn man also 2 mal den Cursor versteckt, muss man den auch 2 mal wieder Anzeigen lassen, bevor er auch wirklich wieder sichtbar ist!!!

Verfasst: 09.06.2006 13:30
von Kaeru Gaman
cool :D

ich seh grad, du frags ab, ob X > ScreenWidth..

das kannste dir sparen, weil das nie passiert.

ich frag nur ab X<0 Or Y<0, wenn das true ist, ist die maus außerhalb, egal an welcher seite.

[edit]
ich überleg grad... X<0 müsste reichen... außerhalb ist außerhalb.

Verfasst: 09.06.2006 14:50
von Kurzer
Kaeru Gaman hat geschrieben:ich seh grad, du frags ab, ob X > ScreenWidth..
das kannste dir sparen, weil das nie passiert.
Doch, weil das Fenster ist breiter als der darin befindliche WindowedScreen.
Und wenn die maus aus dem WScreen rauskommt, aber noch immer im Fenster ist, soll der normale Mauszeiger wieder zu sehen sein.

Gruß Markus

Verfasst: 09.06.2006 15:04
von Kaeru Gaman
stimmt.. ok..

ich hatte es für nen WindowedScreen gemacht, der den gesamten fensterbereich eingenommen hat....


> Was ich noch nicht wusste. Windows hat einen Counter für den ShowCursor! Wenn man also 2 mal den Cursor versteckt, muss man den auch 2 mal wieder Anzeigen lassen, bevor er auch wirklich wieder sichtbar ist!!!

ist eigentlich logisch, weil die API ja von allen programmen benutzt werden kann.

wenn jetzt ein programm den cursor versteckt, und dann kommt ein zweites und versteckt ihn auch, soll er ja erst wieder sichtbar werden, wenn beide programme ihn wieder freigeben...