#WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

#WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Beitrag von mpz »

Hallo Leute,

bis PB 5.10 hat der folgen Code mit #WM_LBUTTONUP noch funktioniert. Ab pb 5.11 wird aber kein Event mehr mit #WM_LBUTTONUP erzeugt. Kennt jemand den Grund bzw eine Lösung?

Gruß Michael

Code: Alles auswählen

OpenWindow(0, 100, 200, 195, 260, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)

Repeat
  Event = WindowEvent() 
  
  If Event = #PB_Event_CloseWindow   ; An event was in the queue so process it 
    Break
  Else  
    Delay(1)  ; No event, let the others apps get some CPU time too ! 
  EndIf 
  
  If event = #WM_LBUTTONDOWN
     Debug "down"  
  EndIf
   
  If event = #WM_LBUTTONUP
    Debug "up"
  EndIf  
  
Until Event=#PB_Event_CloseWindow
__________________________________________________
Thread verschoben
Bugs>Allgemein
03.04.2013
RSBasic
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: #WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Beitrag von STARGÅTE »

Wie oft denn noch diese "Bug-Meldung"?

#WM_LBUTTONDOWN war nie ein PB-Event.
Das PB-Event heißt: #PB_Event_LeftClick
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: #WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Beitrag von Lambda »

Ja, dummer weise. Im Callback allerdings möglich:

Code: Alles auswählen

Procedure ButIWantIt_O_o(hWnd, msg, wParam, lParam)
  
  Select msg
    Case #WM_LBUTTONDOWN
      MessageRequester("", "WM_LBUTTONDOWN", #MB_OK|#MB_ICONINFORMATION)
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

OpenWindow(0, 100, 200, 195, 260, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
SetWindowCallback(@ButIWantIt_O_o())

Repeat
  Event = WindowEvent() 
  
  If Event = #PB_Event_CloseWindow   ; An event was in the queue so process it 
    Break
  Else  
    Delay(1)  ; No event, let the others apps get some CPU time too ! 
  EndIf 
  
  
Until Event=#PB_Event_CloseWindow
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: #WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Beitrag von ts-soft »

Aber besser ohne Delay im eventloop :wink:
Wenn erforderlich, besser ein Timeout nutzen, aber in diesem Beispiel auch unnötig:

Code: Alles auswählen

Procedure ButIWantIt_O_o(hWnd, msg, wParam, lParam)
 
  Select msg
    Case #WM_LBUTTONDOWN
      MessageRequester("", "WM_LBUTTONDOWN", #MB_OK|#MB_ICONINFORMATION)
  EndSelect
 
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

OpenWindow(0, 100, 200, 195, 260, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
SetWindowCallback(@ButIWantIt_O_o())

Repeat
  Event = WaitWindowEvent()
 
  If Event = #PB_Event_CloseWindow   ; An event was in the queue so process it
    Break
  EndIf
 
 
Until Event=#PB_Event_CloseWindow 
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: #WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Beitrag von mpz »

Hi,

warum könnte es wohl eine Bug Meldung sein ?!? Vermutlich weil der Event #WM_LBUTTONDOWN nicht gemeint war der natürlich noch geht weil #WM_LBUTTONDOWN = #PB_Event_LeftClick ist. Es ging doch aber um den Event Maustaste hoch = #WM_LBUTTONUP der nicht mehr funktioniert. Wenn also ein Event zwischen zwei PB Versionen nicht mehr geht, ich aber einige Programme noch mit dem Event geschrieben habe, dann frage ich doch einfach mal hier nach ;)

Die Lösung mit dem Callback funktioniert dann auch mit der Mousehoch, schade das der Befehl nicht mehr gehen soll und ich also jetzt mit Callbacks arbeiten muss. Auch wenns nicht gefällt ist für mich ein Bug...

Code: Alles auswählen

Procedure ButIWantIt_O_o(hWnd, msg, wParam, lParam)
 
  Select msg
    Case #WM_LBUTTONUP 
      MessageRequester("", "#WM_LBUTTONUP", #MB_OK|#MB_ICONINFORMATION)
  EndSelect
 
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

OpenWindow(0, 100, 200, 195, 260, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
SetWindowCallback(@ButIWantIt_O_o())

Repeat
  Event = WaitWindowEvent()
 
  If Event = #PB_Event_CloseWindow   ; An event was in the queue so process it
    Break
  EndIf
 
 
Until Event=#PB_Event_CloseWindow 

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: #WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Beitrag von ts-soft »

Hättest Du ein wenig gesucht, hätteste auch die Erklärung gefunden, die hier und im engl. Forum mehrmals vorhanden ist.

Im EventLoop von PB werden nur die PB-eigenen Events offiziell unterstützt, d.h., das wegfallen vereinzelter oder aller
API-Events, genauso wie das wegfallen von EventLParam() oder EventWParam() wären/sind keine Bugs.

Wenn Du sicherstellen möchtest, diese Events zu empfangen, solltest Du grundsätzlich ein Callback nutzen!

Diese Regelung ist nicht Neu, auch wenn Du zum ersten Male davon hörst.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: #WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Beitrag von mpz »

Hallo,

ich kann der Argumentation schon folgen. Ich hatte aber nichts zu diesem Thema gefunden, daher mein Schreiben. Ich benutze das Event schon seit PB 3.8 glaube ich und erst bei PB 5.11 ist es weg. Warum er weg ist ist mir daher nicht wirklich ersichtlich und wäre sicher leicht änderbar. Aber ich weiß jetzt Bescheid und werde eine Lösung finden.

Gruß
Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: #WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Beitrag von Lambda »

PB sollte eigentlich wesentlich mehr Ereignisse unterstützen. Habe selbst bereits einiges für Windows und Linux portiert (MacOS folgt noch). Viele Nachrichten oder Befehle sind nahezu identisch, verstehe nicht wieso gerade so wichtige wie #PB_EventType_Size fehlen. :|
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: #WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Beitrag von ts-soft »

Es ist seit 5.11 weg, weil seit 5.11 #PB_Event_LeftClick unterstützt wird :wink:
Wenn PB also intern das Event nutzt, fällt es auch schon mal weg, im normalem EventLoop.
Nur im normalem Callback von Windows sollte alles ankommen, weil PB erst dahinter, die für
sich benötigten Events abzweigt. Ohne diese Vorgehen hätten wir z.B. niemals die ganzen
Erweiterungen bezüglich Gadgets (Farben usw.) erfahren. In PB3.xx war das noch nicht der
Fall, da waren die Möglichkeiten ja auch wesentlich geringer, da wurden noch keine Gadgets
von PB gesubclassed usw.
Erweiterungen bringen auch Einschränkungen, bzw. sehe ich das gar nicht als Einschränkung,
die undokumentierte Nutzung der Events im Eventloop von PB ist natürlich mit einem Risiko
verbunden, so wie jede Nutzung undokumentierter oder veraltetet Funktionen (goto usw.)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: #WM_LBUTTONUP funktioniert nicht mehr mit PB 5.11

Beitrag von Josh »

ts-soft hat geschrieben:...so wie jede Nutzung undokumentierter oder veraltetet Funktionen (goto usw.)
Auch wenn die Verwendung von Goto in den meisten Fällen nicht sinnvoll ist, ist es nicht veraltet und undokumentiert:
http://www.purebasic.com/german/documen ... thers.html
Antworten