Seite 1 von 4
Maus loslassen wird null erkannt
Verfasst: 26.12.2020 12:58
von Re42
Hallo,
in meinem Programm reagiert #WM_LBUTTONUP null.
Code: Alles auswählen
If event = #WM_LBUTTONUP : Debug event
......
EndIf : Debug event
Der Debugger liefert nur nach Endif einen Wert (13112), also wird die Abfrage „Maus loslassen“ erst gar nicht erkannt. Die Maus ist aber in Ordnung, denn in meinem Parallelprogramm funktioniert die 1a mit exakt derselben Abfrage und auf ein und demselben Laptop. Ich habe sowas noch nicht erlebt, wie ist denn das möglich? Danke für Info.
Re: Maus loslassen wird null erkannt
Verfasst: 26.12.2020 13:27
von Mijikai
Lauffähiger Code zum Testen wäre schön gewesen.
Funktioniert einwandfrei hier:
Code: Alles auswählen
;PB 5.73 x86/x64
EnableExplicit
Procedure.i WindowCallback(hWnd.i,uMsg.i,wParam.i,lParam.i)
Select uMsg
Case #WM_LBUTTONDOWN
Debug 111
Case #WM_LBUTTONUP
Debug 222
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure.i Main()
If OpenWindow(0,0,0,320,200,#Null$,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
SetWindowCallback(@WindowCallback())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
CloseWindow(0)
EndIf
ProcedureReturn #Null
EndProcedure
Main()
End
Re: Maus loslassen wird null erkannt
Verfasst: 26.12.2020 13:29
von STARGÅTE
13112 ist der Wert für das Pure Basic Event #PB_Event_LeftClick, also genau das Event was du suchst wenn die Maus losgelassen wird.
Wo kommt denn dein event her? Die #WM konstanten werden ja in der PB Dokumentation nicht aufgeführt, man sollte sie wenn überhaupt nur im Callback (SetWindowCallback()) nutzen (wie es Mijikai richtigerweise zeigt, danke dafür ^^).
Re: Maus loslassen wird null erkannt
Verfasst: 26.12.2020 13:58
von tft
Hallo, .... Stargate ...... ich dachte du hast dich verabschiedet
Nachfolgenden Code, der nicht von mir ist, aber etwas erweitert. Verwende ich um Events zu testen oder zu prüfen. Vielleicht hilft er ja.
Code: Alles auswählen
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=735&highlight=
; Author: bobobo (updated for PB4.00 by blbltheworm)
; Date: 23. April 2003
; OS: Windows
; Demo: No
;Autor : bobobo
;-----------------------------------------
;Tastatur und Mausmessages in Fenstern OHNE directX
;dafür mit eventwParam und eventLParam (aber nur zur Anzeige für ganz Neugierige)
;soweit ich weiß wird EventwParam und EventlParam irgendwann nicht mehr unterstützt
;bis dahin gilt:
;Solange die Maus im Fensterchen ist gibt es bei Bewegung derselben
;diverse Mausmessages .. Und .. Bei aktivem Fenster und Tastaturereignissen
;gibt's Tastaturmessages (Taste runter und Tastehoch u.s.w.)
;ömm ja .. Debug aktivieren !!
OpenWindow(1,0,0,200,100,"Event Test",#PB_Window_SystemMenu |#PB_Window_ScreenCentered)
ButtonGadget(1, 0, 0, 80, 20, "Play")
ButtonGadget(2, 90, 0, 80, 20, "Stop")
DisableGadget(2,1)
Debug "Bitte drücken sie eine beliebige Taste!"+Str(rr)
GetCursorPos_(st.POINT)
Debug st\x
Debug st\y
Repeat
Event=WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case 1 ; Play
DisableGadget(2,0) ; Enable the 'Stop' gadget
DisableGadget(1,1) ; Disable the 'Play' Gadget
Case 2 ; Stop
DisableGadget(1,0) ; Enable the 'Play' gadget
DisableGadget(2,1) ; Disable the 'Stop' Gadget
EndSelect
Case #WM_MOUSEWHEEL
If (EventwParam() >> 16) & $8000
Debug "Down"
Else
Debug "Up"
EndIf
Case #WM_MOUSEMOVE
Debug "#WM_MOUSEMOVEw " + Str(EventwParam())
Debug "#WM_MOUSEMOVEl " + StrF(EventlParam())
Case #WM_LBUTTONDBLCLK
Debug "#WM_LBUTTONDBLCLK " + Str(EventwParam())
Debug "#WM_LBUTTONDBLCLK " + Str(EventlParam())
Case #WM_LBUTTONDOWN
Debug "#WM_LBUTTONDOWN " + Str(EventwParam())
Debug "#WM_LBUTTONDOWN " + Str(EventlParam())
Case #WM_LBUTTONUP
Debug "#WM_LBUTTONUP " + Str(EventwParam())
Debug "#WM_LBUTTONUP " + Str(EventlParam())
Case #WM_RBUTTONDOWN
Debug "#WM_RBUTTONDOWN " + Str(EventwParam())
Debug "#WM_RBUTTONDOWN " + Str(EventlParam())
Case #WM_RBUTTONUP
Debug "#WM_RBUTTONUP" + Str(EventwParam())
Debug "#WM_RBUTTONUP" + Str(EventlParam())
Case #WM_MBUTTONDBLCLK
Debug "#WM_MBUTTONDBLCLK " + Str(EventwParam())
Debug "#WM_MBUTTONDBLCLK " + Str(EventlParam())
Case #WM_MBUTTONDOWN
Debug "#WM_MBUTTONDOWN " + Str(EventwParam())
Debug "#WM_MBUTTONDOWN " + Str(EventlParam())
Case #WM_MBUTTONUP
Debug "#WM_MBUTTONUP " + Str(EventwParam())
Debug "#WM_MBUTTONUP " + Str(EventlParam())
Case #WM_NCMOUSEMOVE
Debug "#WM_NCMOUSEMOVE " + Str(EventwParam())
Debug "#WM_NCMOUSEMOVE " + Str(EventlParam())
Case #WM_NCLBUTTONDBLCLK
Debug "#WM_NCLBUTTONDBLCLK " + Str(EventwParam())
Debug "#WM_NCLBUTTONDBLCLK " + Str(EventlParam())
Case #WM_ACTIVATE
Debug "#WM_ACTIVATE " +Str(EventwParam())
Debug "#WM_ACTIVATE " +Str(EventlParam())
Case #WM_CHAR
Debug "#CHAR w: " + Chr(EventwParam())
Debug "#CHAR l: " + Str(EventlParam())
Case #WM_DEADCHAR
Debug "#DEADCHAR: " + Str(EventwParam())
Case #WM_KEYDOWN
Debug "#KEYDOWN(w): " + Str(EventwParam())
Debug "#KEYDOWN(l): " + Str(EventlParam())
Case #WM_KEYUP
Debug "#KEYUP(w): " + Str(EventwParam())
Debug "#KEYUP(l): " + Str(EventlParam())
Case #WM_SYSCHAR
Debug "#SYSCHAR: " + Str(EventwParam())
Case #WM_SYSDEADCHAR
Debug "#SYDEADSCHAR: " + Str(EventwParam())
Case #WM_SYSKEYDOWN
Debug "#SYSKEYDOWN: " + Str(EventwParam())
Case #WM_SYSKEYUP
Debug "#SYSKEYUP: " + Str(EventwParam())
Default
Debug Event
EndSelect
GetCursorPos_(st.POINT)
Debug st\x
Debug st\y
Debug "-----------------"
ForEver
End
Re: Maus loslassen wird null erkannt
Verfasst: 26.12.2020 14:40
von Re42
Danke für die Antworten, aber Windowcallback ist nur für erfahrene Programmierer und das ist mir auch zu hoch. PureBasic erhebt ja den Anspruch, für alle da zu sein, die logisch denken können und genau das tue ich. Ich habe schon etliche Programme geschrieben, auch mit #WM_LBUTTONUP dabei, aber sowas wie jetzt ist mir noch nicht vorgekommen.
Der Abfragewert für den Linksklick-Event = 13112
und der Abfragewert für den Mausloslassen-Event = 514
Edit: In meinem Code ist noch mehr im Busch, wie ich jetzt gemerkt habe. Ich melde mich später wieder, falls es dann doch funktioniert. Danke nochmals.
Re: Maus loslassen wird null erkannt
Verfasst: 26.12.2020 14:46
von NicTheQuick
Wieso nutzt du überhaupt die Windows-Konstanten, wenn du auch einfach #PB_Event_LeftClick benutzen könntest?
Re: Maus loslassen wird null erkannt
Verfasst: 26.12.2020 14:54
von Re42
#PB_Event_Leftclick ist doch nur zum Abfragen der gedrückten Maus. Ich will aber die wieder losgelassene Maus abfragen.
Re: Maus loslassen wird null erkannt
Verfasst: 26.12.2020 14:59
von Mijikai
Wenn (#WM_) Messages nicht im Callback abgefragt werden dann benutzt wenigestens PeekMessage_()

Re: Maus loslassen wird null erkannt
Verfasst: 26.12.2020 15:32
von Re42
Edit: Ursprünglicher Beitrag war nicht mehr aktuell.
Re: Maus loslassen wird null erkannt
Verfasst: 26.12.2020 15:45
von ccode_new
Frohe Weihnachten, Gesundheit, etc ...
An Re42:
Re42 hat geschrieben:
Es bleibt dabei, daß in dem Code #WM_LBUTTONUP nicht die Bohne abgefragt werden kann und ich werde das auch Purebasic melden. Sollen die doch endlich mal einen PB-eigenen Befehl zum Abfragen der wieder losgelassenen Maus einführen.
Kannst du mal einen zusammenhängenden Code, oder ein Video, etc. posten wo man dein Problem sieht.
Vielleicht liegt auch einfach ein Gadget auf deinem Fenster und du kannst deswegen nicht direkt auf das Fenster klicken und bekommst daher keine Eventabfrage.
???