Seite 1 von 1
[PB 4.1 B4] TextGadget & Events (erledigt: Kein PB-Bug)
Verfasst: 07.11.2007 15:04
von Kiffi
Hallo,
ist mir gerade aufgefallen: Wenn ich auf einem Textgadget einen linken
Doppelklick ausführe, dann bekomme ich die EventTypes LeftClick und
RightClick anstelle von LeftDoubleClick.
Ist das bei Euch auch so?
Code: Alles auswählen
OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 30, "")
CreateGadgetList(WindowID(0))
TextGadget(1, 5, 5, 190, 20, "Hier klicken!", #PB_Text_Border | #SS_NOTIFY)
Repeat
WWE = WaitWindowEvent()
If WWE=#PB_Event_Gadget And EventGadget()=1
Select EventType()
Case #PB_EventType_LeftClick : Debug "#PB_EventType_LeftClick"
Case #PB_EventType_RightClick : Debug "#PB_EventType_RightClick"
Case #PB_EventType_LeftDoubleClick : Debug "#PB_EventType_LeftDoubleClick"
Case #PB_EventType_RightDoubleClick : Debug "#PB_EventType_RightDoubleClick"
Case #PB_EventType_Focus : Debug "#PB_EventType_Focus"
Case #PB_EventType_LostFocus : Debug "#PB_EventType_LostFocus"
Case #PB_EventType_Change : Debug "#PB_EventType_Change"
Case #PB_EventType_DragStart : Debug "#PB_EventType_DragStart"
EndSelect
EndIf
Until WWE=#PB_Event_CloseWindow
Grüße ... Kiffi
// Edit: Subject angepasst. Ist wohl kein PB-Bug.
Verfasst: 07.11.2007 15:41
von AND51
Ja, bei mir ist es genauso.
Habe es aber noch mit der v4.10 BETA 3 getestet, denke aber, dass dies zeigt, dass der Bug sich doch über mehrere Versionen erstreckt.
Debugger hat geschrieben:#PB_EventType_LeftClick
#PB_EventType_RightClick
Verfasst: 07.11.2007 16:45
von PMTheQuick
Mit der PB 4.10 Beta 4 genau das gleiche...
Gruss
PMTheQuick

Verfasst: 07.11.2007 16:55
von Kiffi
@AND51 & PMTheQuick: Danke für Eure schnelle Rückmeldung!
Ich hab's mal im englischen Forum als Bug gemeldet:
http://www.purebasic.fr/english/viewtop ... 692#217692
Grüße ... Kiffi
Verfasst: 07.11.2007 18:51
von Ligatur
Hallo,
ist zwar bei mir auch so. Es ist aber zumindest kein PB - Bug, denn ein entsprechendes Control vom System verhält sich genauso:
Code: Alles auswählen
hwnd = OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 30, "")
; CreateGadgetList(WindowID(0))
; TextGadget(1, 5, 5, 190, 20, "Hier klicken!", #PB_Text_Border | #SS_NOTIFY)
CreateWindowEx_(0, "STATIC", "Hier klicken", #WS_CHILD | #WS_VISIBLE | #SS_NOTIFY | #WS_BORDER, 5, 5, 190, 20, hwnd, 1, 0, 0)
Repeat
WWE = WaitWindowEvent()
If WWE=#PB_Event_Gadget And EventGadget()=1
Select EventType()
Case #PB_EventType_LeftClick : Debug "#PB_EventType_LeftClick"
Case #PB_EventType_RightClick : Debug "#PB_EventType_RightClick"
Case #PB_EventType_LeftDoubleClick : Debug "#PB_EventType_LeftDoubleClick"
Case #PB_EventType_RightDoubleClick : Debug "#PB_EventType_RightDoubleClick"
Case #PB_EventType_Focus : Debug "#PB_EventType_Focus"
Case #PB_EventType_LostFocus : Debug "#PB_EventType_LostFocus"
Case #PB_EventType_Change : Debug "#PB_EventType_Change"
Case #PB_EventType_DragStart : Debug "#PB_EventType_DragStart"
EndSelect
EndIf
Until WWE=#PB_Event_CloseWindow
Grüße,
Ligatur
Verfasst: 07.11.2007 21:10
von mk-soft
Jetzt kommst,
bei PB v3.94 ist es auch so. Ist also eine eigendschaft von STATIC Text und kein Bug.
Verfasst: 08.11.2007 01:08
von edel
Ligatur hat geschrieben:Hallo,
ist zwar bei mir auch so. Es ist aber zumindest kein PB - Bug, denn ein entsprechendes Control vom System verhält sich genauso:
Das Eventsystem gibt es aber nicht so unter Windows. Es ist ein Bug
in PB. Normal kommt ja wm_lbuttondblclk und kein wm_rbuttondown
oder dergleichen.
Edit:
Habe gerade Freds Post gelesen. Es ist also kein Bug, eher ein
undefiniertes Verhalten ...
Verfasst: 08.11.2007 01:15
von AND51
Hallo!
Ich hoffe, das passt halbwegs, was ich hier poste. Es scheint kein PB Bug zu sein, wenn ich das hier richtig mitverfolgt habe.
Möchte daher die Reaktion des englischen Boards hier nochmal reinstellen:
edel hat geschrieben:Es ist ein Bug in PB.
- Dagegen sprechen:
gnozal hat geschrieben:Iirc, #PB_EventType_LeftDoubleClick never worked with static controls (even with #SS_NOTIFY style).
It works with subclassing though.
freak hat geschrieben:#SS_NOTIFY is not a PB flag...
Fred hat geschrieben:A TextGadget() doesn't support any event officially.
Der Link zum englischen Topic ist in Kiffis Beitrag zu finden.
Verfasst: 08.11.2007 01:54
von Ligatur
Eigendlich werden laut MSDN mit SS_NOTIFY - Message gesendete Nachrichten über eine WM_COMMAND - Nachricht versendet mit HIWORD(wParam) = #STN_* (In Fall von Doppelklicks #STN_DBLCLK). Sie lassen sich also so abfragen ohne Subclassing zu verwenden:
Code: Alles auswählen
Procedure.l wcb(hwnd, msg, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
If msg = #WM_COMMAND And lParam = GadgetID(1)
If (wParam >> 16) = #STN_DBLCLK
Debug "Doubleclick"
EndIf
EndIf
ProcedureReturn Result
EndProcedure
OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 30, "")
CreateGadgetList(WindowID(0))
TextGadget(1, 5, 5, 190, 20, "Click here!", #PB_Text_Border | #SS_NOTIFY)
SetWindowCallback(@wcb())
Repeat
WWE = WaitWindowEvent()
If WWE=#PB_Event_Gadget And EventGadget()=1
; Select EventType()
; Case #PB_EventType_LeftClick : Debug "#PB_EventType_LeftClick"
; Case #PB_EventType_RightClick : Debug "#PB_EventType_RightClick"
; Case #PB_EventType_LeftDoubleClick : Debug "#PB_EventType_LeftDoubleClick"
; Case #PB_EventType_RightDoubleClick : Debug "#PB_EventType_RightDoubleClick"
; Case #PB_EventType_Focus : Debug "#PB_EventType_Focus"
; Case #PB_EventType_LostFocus : Debug "#PB_EventType_LostFocus"
; Case #PB_EventType_Change : Debug "#PB_EventType_Change"
; Case #PB_EventType_DragStart : Debug "#PB_EventType_DragStart"
; EndSelect
EndIf
Until WWE=#PB_Event_CloseWindow
Verfasst: 08.11.2007 10:27
von Kiffi
Hallo,
danke für die rege Anteilnahme! Ich bin auch zu dem Schluss gekommen,
dass es sich hierbei wohl nicht direkt um einen PB-Bug handelt und habe den
Thread-Betreff entsprechend angepasst.
... und durch die Verwendung des Callbacks kann man dann ja doch noch an
die Events herankommen.
Grüße ... Kiffi