Seite 1 von 1

Mousebutton() funktioniert nicht

Verfasst: 15.09.2010 12:57
von PB42
Hallo,

mich würde mal interessieren, warum in meinem Testcode der Befehl Mousebutton() nicht funktioniert. Stattdessen verschwindet der Mauszeiger komplett. Das Programm soll ein magisches Auge imitieren und auffächern. Der Code:

Code: Alles auswählen

InitSprite()
InitMouse()
OpenWindow(0,0,0,600,400,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)
OpenWindowedScreen(WindowID(0), 0, 0, 180, 260, 0, 0, 0)
CreateGadgetList(WindowID(0))

Repeat
  Event = WaitWindowEvent(1)
  
  x1 = 90
  x2 = 90
  y1 = 215
  y2 = 215
  
  ExamineMouse()
  If MouseButton(1)
  cnt = cnt + 1
  x1 = x1+cnt
  x2 = x2-cnt
  EndIf
  
  LoadFont(0,"Gulim",200,RGB(0,200,0))
  StartDrawing(ScreenOutput())
  FrontColor(RGB(0,0,0))
  DrawingFont(FontID(0))
  DrawText(-5,-5,"U")
  
  For i = 28 To 40
  Line(30,i,120,0)
  Next
  
  LineXY(90,-150,x1,y1,RGB(0,0,0))
  LineXY(90,-150,x2,y2,RGB(0,0,0))
  
  FillArea(90,210,RGB(0,0,0),RGB(0,200,0))
  FillArea(90,250,RGB(0,0,0),RGB(0,0,0))
  FillArea(90,20,RGB(0,0,0),RGB(0,0,0))
  
  Box(0,0,180,28,RGB(237,234,215))
  Box(0,20,24,240,RGB(237,234,215))
  Box(0,230,180,30,RGB(237,234,215))
  Box(155,20,25,220,RGB(237,234,215))
  
  StopDrawing()
  FlipBuffers()

Until event = #PB_Event_CloseWindow
Der Mauszeiger verschwindet erst dann, wenn ich ExamineMouse() einsetze. Und das ganze funktioniert auch nicht mit IF Mousebutton(#WM_Lbuttondown) gemäß der PureBasic-Hilfe.

Falls hier wieder einer ankommen sollte mit "jetzt nach 5 Jahren stellst du solche Anfängerfragen", stelle ich hier nochmals klar, daß ich PureBasic nur alle Jubel Jahre mal aktiviere. In einem meiner anderen Programme funktioniert MuoseButton(1) sehr wohl, allerdings ist das ein Spiel mit OpenScreen(), vielleicht geht Mousebutton() ja nur mit OpenScreen, aber dann könnte das auch mal in der Anleitung stehen. Danke für Hilfe. PB42

__________________________________________________
Code-Tags hinzugefügt
15.09.2010
RSBasic

Re: Mousebutton() funktioniert nicht

Verfasst: 15.09.2010 13:14
von STARGÅTE
  1. Code-Tags benutzen!
  2. Ne Maus zu benutzen (im Screen) ohne mauszeiger ist nervig !
  3. Mousebutton(#WM_Lbuttondown) steht so nirgends in der Hilfe !
  4. MouseButton(#PB_MouseButton_Left) funktioniert wunderbar in deinem Programm,
    einfach mal ein Debug "Drück" ins If schreiben und du siehst das es ein Ereignis gibt
MouseButton() funktioniert also sehr wohl !

Was dein programm machen soll, versteh ich jedoch nicht.

Re: Mousebutton() funktioniert nicht

Verfasst: 15.09.2010 13:18
von HeX0R
Er malt die ostfriesische Flagge (schwarzer Adler auf schwarzem Grund).

(So würde man zumindest was sehen:

Code: Alles auswählen

LineXY(90, -150, x1, y1, #White)
LineXY(90, -150, x2, y2, #White)
)

Re: Mousebutton() funktioniert nicht

Verfasst: 15.09.2010 13:28
von PB42
Hallo stargate,

erstmal Danke, aber auch mit If MouseButton(#PB_MouseButton_Left) verschwindet der Mauszeiger gnadenlos und man kann das Programm nur noch abwürgen.

Magische Augen waren Röhren, die bevorzugt in der Rundfunktechnik eingesetzt wurden, ist aber schon einige Jahrzehnte her.

Stichwort "ostfriesische Flagge": Ich weiß zwar nicht, wieso mein Name PB42 hier scheinbar als Symbol für den puren Idioten steht, obwohl ich genauso selten hier poste wie ich PureBasic benutze, aber ich werde es wohl nicht ändern können.

Re: Mousebutton() funktioniert nicht

Verfasst: 15.09.2010 13:40
von STARGÅTE
erstmal Danke, aber auch mit If MouseButton(#PB_MouseButton_Left) verschwindet der Mauszeiger gnadenlos und man kann das Programm nur noch abwürgen.
Ja natürlich :? wenn du InitMouse(), ExamineMouse() und MouseButton() verwendest, wird eine eigene Maus für den Screen verwendet!
Das heißt dann musst du selber den Mauszeiger zeichnen und die position mit MouseX() und MouseY() abfragen.
Die WindowsMaus wird dabei "deaktiviert".

Was du vermutlich haben willst, und warum du auch mti dem #WM_Lbuttondown daher gekommen bist, ist die Windows-Maus zu benutzen.
Dann verwensest du aber keinerlei Funktionen für die ScreenMaus, sonden Fragst die Events vom Window ab:

Code: Alles auswählen

;[...]
Event = WaitWindowEvent(1)

x1 = 90
x2 = 90
y1 = 215
y2 = 215

If Event = #WM_LBUTTONDOWN
cnt = cnt + 1
x1 = x1+cnt
x2 = x2-cnt
EndIf
;[...]
Wenn du das eigentlcihe Zeichnen aber nicht richtig machst, siehst du weiterhin nichts !

Re: Mousebutton() funktioniert nicht

Verfasst: 15.09.2010 14:01
von PB42
If Event = #WM_LBUTTONDOWN war mir klar. Das funktioniert. Mir war es nur darum gegangen, mal abzuklären, warum alternativ dazu das ganze mit Mousebutton() nicht funktioniert. Danke nochmals.

Re: Mousebutton() funktioniert nicht

Verfasst: 15.09.2010 14:35
von HeX0R
PB42 hat geschrieben: Stichwort "ostfriesische Flagge": Ich weiß zwar nicht, wieso mein Name PB42 hier scheinbar als Symbol für den puren Idioten steht, obwohl ich genauso selten hier poste wie ich PureBasic benutze, aber ich werde es wohl nicht ändern können.
Naja, das war mehr als humoristischer Einwurf gedacht, ich sehe keinen Grund dich als Idioten abzustempeln.
(Aber o.k., ich bin nun mal auch Smiliefaul, vielleicht hätte so einer ;) geholfen ;) )

Re: Mousebutton() funktioniert nicht

Verfasst: 15.09.2010 15:12
von PB42
Danke. Ich war vorhin einfach mal kurz sauer und hatte leider etwas überreagiert. Budweiser überzeugt mich aber auch :wink:

Re: Mousebutton() funktioniert nicht

Verfasst: 15.09.2010 19:09
von Fluid Byte
War das nicht weißer Adler auf weißem Grund (Otto Walkes)?

Re: Mousebutton() funktioniert nicht

Verfasst: 16.09.2010 12:15
von HeX0R
Fluid Byte hat geschrieben:War das nicht weißer Adler auf weißem Grund (Otto Walkes)?
Genau!
Aber da hier alles schwarz war (und ich nicht dachte, irgendeiner kennt den alten Blödsinn von Otto noch),
hatte ich das kurzerhand umgeändert.