Seite 2 von 2

Verfasst: 11.12.2005 03:38
von spacewalker

Code: Alles auswählen

  If WindowMouseX() > 0 And WindowMouseX() < 50 And WindowMouseY() > 0 And WindowMouseY() < 200 
  StartDrawing(ScreenOutput()) 
  FrontColor(255,255,255) 
  Box(408,0,50,200) 
  StopDrawing() 
  EndIf 
hier zeichnest du das nicht mehr zurueck, auch wenn maus ausserhalb ist. Allgemein wuesste ich nicht, warum du in diesem fall auf winapi zurueckgreifen musst, PB hat genug power, um mit sowas mit den befehlen aus eigener schatztruhe fertig zu werden.

Verfasst: 11.12.2005 03:46
von PB42
Hallo Spacewalker,
sobald du innerhalb eines screens zeichnest, sind die buttons e ungueltig
stimmt nicht, denn folgende Code-Erweiterung funktioniert:

Code: Alles auswählen

InitSprite()
InitMouse()
OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget,"")
OpenWindowedScreen(WindowID(0), 0, 0, 700, 200, 0, 0, 0)
CreateGadgetList(WindowID(0))

ButtonGadget(1,20,300,100,30,"Test")
TextGadget(2,150,300,100,30,"",#PB_Text_Center|#PB_Text_Border)

Repeat
eventID = WaitWindowEvent()
EventType()     

    StartDrawing(ScreenOutput())
    FrontColor(255,255,255)   
    Box(0,0,50,200)
    Box(51,0,50,200)
    Box(102,0,50,200)
    Box(153,0,50,200)
    Box(204,0,50,200)
    Box(255,0,50,200)
    Box(306,0,50,200)
    Box(357,0,50,200)
    
    FrontColor(0,0,0)
    Box(32,0,36,130)
    Box(83,0,35,130)
    Box(134,0,35,130)
    
    Box(235,0,35,130)
    Box(286,0,35,130)  
  StopDrawing()
  FlipBuffers()  
  
  If WindowMouseX() > 0 And WindowMouseX() < 50 And WindowMouseY() > 0 And WindowMouseY() < 200
  StartDrawing(ScreenOutput())
  FrontColor(255,255,255)
  Box(408,0,50,200)
  StopDrawing()
  EndIf
  
  GadgetID = EventGadgetID() 
  Select GadgetID
  Case 1
  SetGadgetText(2,"Hallo!")
  EndSelect   
   

Until eventID = #PB_EventCloseWindow
PB42

Verfasst: 11.12.2005 03:51
von PB42
Hallo Spacewalker,
Allgemein wuesste ich nicht, warum du in diesem fall auf winapi zurueckgreifen musst, PB hat genug power, um mit sowas mit den befehlen aus eigener schatztruhe fertig zu werden.
Das ist ja genau das, was mich auch gewundert hat, daß PB so schnell schlapp machen soll, aber kannst Du mir den Gefallen tun und mal in die Schatztruhe reingreifen? Mich würde das echt brennend interessieren. Danke.

PB42

Verfasst: 11.12.2005 14:32
von spacewalker
Hi !
hab mich wohl verlesen in der nacht :-)
weiss gar nicht warum ich mich um die zeit am wochenende noch ans rechter setzte :oops:

Das mit winapi war schon richtig - ist eine konstante, keine funktion.
Du kannst die konstanten nehmen oder die werte, ist eigentlich egal.

Code: Alles auswählen

InitSprite() 
InitMouse()
OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget,"") 
OpenWindowedScreen(WindowID(0), 0, 0, 700, 200, 0, 0, 0) 
CreateGadgetList(WindowID(0)) 

ButtonGadget(1,20,300,100,30,"Test") 
TextGadget(2,150,300,100,30,"",#PB_Text_Center|#PB_Text_Border) 

Repeat 
eventID = WaitWindowEvent() 

Select EventID
  Case #WM_LBUTTONDOWN ; wert = 513 
  ;Konstanten fuer die anderen werte kenne ich auf die schnelle leider nicht
    Debug "Linke Maustaste gedrückt"
  Case 514
    Debug "Linke Maustaste losgelassen"
  Case 516
    Debug "Rechte Maustaste gedrückt"
  Case 517
    Debug "Rechte Maustaste losgelassen"      
  Case 519
    Debug "Mittlere Maustaste gedrueckt"
  Case 520
    Debug "Mittlere Maustaste losgelassen"    
EndSelect      

    StartDrawing(ScreenOutput()) 
    FrontColor(255,255,255)    
    Box(0,0,50,200) 
    Box(51,0,50,200) 
    Box(102,0,50,200) 
    Box(153,0,50,200) 
    Box(204,0,50,200) 
    Box(255,0,50,200) 
    Box(306,0,50,200) 
    Box(357,0,50,200) 
    
    FrontColor(0,0,0) 
    Box(32,0,36,130) 
    Box(83,0,35,130) 
    Box(134,0,35,130) 
    
    Box(235,0,35,130) 
    Box(286,0,35,130)  
  StopDrawing() 
  FlipBuffers()  
  
  If WindowMouseX() > 0 And WindowMouseX() < 50 And WindowMouseY() > 0 And WindowMouseY() < 200 
    StartDrawing(ScreenOutput()) 
      FrontColor(255,255,255) 
      Box(408,0,50,200) 
    StopDrawing() 
  Else 
    StartDrawing(ScreenOutput()) 
      FrontColor(0,0,0) 
      Box(408,0,50,200) 
    StopDrawing()  
  EndIf 
  
  GadgetID = EventGadgetID() 
  If EventID = #PB_Event_Gadget
    Select GadgetID 
      Case 1 
        If GetGadgetText(2) = "Hallo!"
          SetGadgetText(2,"")
        Else  
          SetGadgetText(2,"Hallo!")
        EndIf   
    EndSelect    
  EndIf  

Until eventID = #PB_EventCloseWindow
ich hoffe das ist so ok

Verfasst: 11.12.2005 16:49
von PB42
Vielen Dank, die Werte werde ich mir abspeichern. Im Moment brauche ich zwar nur die Werte 513 und 514, aber gut, wenn man noch mehr Werte weiß. :) Gibt es eigentlich irgendwo eine Tabelle, wo man die ganzen winapi-Befehle einsehen kann?

PB42

Verfasst: 11.12.2005 17:05
von roherter
http://people.freenet.de/gnozal/ConstantsExplorer.zip

und zusätzlich würde ich mir noch den Api-Guide besorgen!

Verfasst: 12.12.2005 12:46
von PB42
Danke. Von jetzt auf gleich brauche ich das natürlich nicht, denn erstmal gibt es für ich noch sehr viel in der PB-Schatztruhe zu entdecken.

PB42

Hmm, nützlich!

Verfasst: 07.02.2006 01:50
von Nalfein
Wollte grad ne Frage posten wie zum Henker ich die Maustasten in nem WindowedScreen abgefragt kriege, ohne den Cursor auf den Screen zu beschränken...

Aber die Eventnummern sind nützlich.

Fehlt noch Nr. 512 : "Mouse über Screen bewegt" oder sowas; kann man auch gebrauchen!
Mauscursor im Fensterrahmen bringt Nr. 160, aber das kann man auch anders abfragen..

Eigentlich könnte man sowas (die Nummern bzw. PB-Konstanten) doch gleich in "WindowEvent()" und "Wait~" in die Anleitung einbauen, oder?

Ich meine, WENN es schon noch andere Events gibt...