Seite 1 von 2

Abfrage von Maus(position) bei OpenWindowedScreen

Verfasst: 06.04.2015 19:12
von Delle
Hallo,

irgendwie verwirrt mich das Beispiel zu OpenWindowedScreen() bischen :-/

Wie frage ich da z.B. den Klick der rechten Maustaste ab bzw. die aktuelle Mausposition?

Irgendwie kommt doch hier 2D und 3D durcheinander oder nicht?

Code: Alles auswählen

If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0:MessageRequester("Error","Can't open the sprite system",0):End:EndIf

 OpenWindow(0, 0, 0, 335, 477, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
 OpenWindowedScreen(WindowID(0), 0, 0, 335, 477, 0, 0, 0)
 
    ReleaseMouse(1)
    
    ;Load Sprites
    
   Repeat
      
      ExamineKeyboard():ExamineMouse()
      
      Repeat

        Event = WindowEvent()
        
        Select Event
          Case #PB_Event_CloseWindow
            Quit = 1
          Case #PB_Event_LeftClick
            MessageRequester("",Str(MouseX()))
        EndSelect
        
      Until Event = 0
      
      If MouseButton(2):End:EndIf
           
      ClearScreen(RGB(0,0,0))
      
      ; Display Sprites

      FlipBuffers()
    
Until Quit Or KeyboardReleased(#PB_Key_Escape)
MouseX() liefert immer 0 und MouseButton(2) wird vollkommen ignoriert.

Werden etwa alle Abfragen bereits in der WindowEvent-Schleife abgfangen?

Danke,
Delle

Re: Abfrage von Maus(position) bei OpenWindowedScreen

Verfasst: 06.04.2015 19:30
von Imhotheb
Delle hat geschrieben:ReleaseMouse(1)
mit ReleaseMouse(0) geht es ... warum kann ich dir nicht sagen :lamer:

Re: Abfrage von Maus(position) bei OpenWindowedScreen

Verfasst: 06.04.2015 19:35
von ts-soft
Weil mit ReleaseMouse(0) die Maus gefangen und von PB genutzt wird. Mit ReleaseMouse(1) wird sie ans OS freigegeben.

Re: Abfrage von Maus(position) bei OpenWindowedScreen

Verfasst: 06.04.2015 19:37
von Delle
ts-soft hat geschrieben:Weil mit ReleaseMouse(0) die Maus gefangen und von PB genutzt wird. Mit ReleaseMouse(1) wird sie ans OS freigegeben.
Hm... die Maus soll aber auf dem Screen zu sehen sein... also klammer ich ReleaseMouse aus und verwende stattdessen ein Sprite an der Mausposition?!?

Re: Abfrage von Maus(position) bei OpenWindowedScreen

Verfasst: 06.04.2015 19:41
von Imhotheb
ts-soft hat geschrieben:Weil mit ReleaseMouse(0) die Maus gefangen und von PB genutzt wird. Mit ReleaseMouse(1) wird sie ans OS freigegeben.
ein Hinweis darüber in der Hilfe wäre durchaus ... ähhhmmm ... hilfreich :roll:

EDIT: damit meine ich das PB die Maus nur "gefangen" abfragen kann

Re: Abfrage von Maus(position) bei OpenWindowedScreen

Verfasst: 06.04.2015 19:53
von ts-soft
Eigentlich steht das Alles in der Hilfe: http://www.purebasic.com/german/documen ... mouse.html
und es läßt sich auch entnehmen wofür das ganze sein soll (IsScreenActive()).

Also, wenn jemand den Screen verlassen möchte (z.B. Alt-Tab in Windows) so sollte man die Mouse freigeben,
ansonsten fuchtelt derjenige da sinnlos auf dem Bildschirm rum.

Gruß
Thomas

Re: Abfrage von Maus(position) bei OpenWindowedScreen

Verfasst: 06.04.2015 19:55
von Delle
Aber wieso kann man die Maus nicht einfach "normal" benutzen wie auf einem "normalen" PB-Fenster?

Re: Abfrage von Maus(position) bei OpenWindowedScreen

Verfasst: 06.04.2015 20:02
von Imhotheb
PB-Hilfe hat geschrieben:Blockiert ("locked") die Maus oder gibt sie zur Benutzung unter dem Standard-OS frei. Dies geschieht typischerweise nach Überprüfung des Ergebnisses von IsScreenActive().
Meiner Ansicht nach hat das einfangen der Maus nichts damit zu tun ob die Koordinaten abgefragt werden können. Muss man sich einfach "dazudenken" :lol:
Delle hat geschrieben:Aber wieso kann man die Maus nicht einfach "normal" benutzen wie auf einem "normalen" PB-Fenster?
Würde mich auch interessieren ... aber hat wohl mit den "internen" Routinen zu tun

Re: Abfrage von Maus(position) bei OpenWindowedScreen

Verfasst: 06.04.2015 20:11
von Imhotheb
vielleicht ist CanvasGadget eher etwas für dich?

Re: Abfrage von Maus(position) bei OpenWindowedScreen

Verfasst: 06.04.2015 20:15
von ts-soft
Steht schon wieder in der Hilfe, will die keiner Öffnen? :lol:
Die Mouselib verwendet auf Screens unter z.B. Windows, DirectX und ist LowLevel.
Es werden also ganz andere Routinen, viel schneller und genauer, genutzt!