Anfängerfragen zum Programmieren mit PureBasic.
edel
Beiträge: 3667 Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:
Beitrag
von edel » 31.05.2007 05:52
Mit Subclassing kann man die Events dennoch abfragen :
(Benoetigt aktuelles PBOSL)
Code: Alles auswählen
Procedure _subclass_cb_(hWnd,uMsg,wParam,lParam,uId,uData)
If uMsg = #WM_LBUTTONDBLCLK
Debug "LBUTTONDBLCLK"
EndIf
If uMsg = #WM_LBUTTONDOWN
Debug "LBUTTONDOWN"
EndIf
If uMsg = #WM_LBUTTONUP
Debug "LBUTTONUP"
EndIf
If uMsg = #WM_RBUTTONDBLCLK
Debug "RBUTTONDBLCLK"
EndIf
If uMsg = #WM_RBUTTONDOWN
Debug "RBUTTONDOWN"
EndIf
If uMsg = #WM_RBUTTONUP
Debug "RBUTTONUP"
EndIf
If uMsg = #WM_MBUTTONDBLCLK
Debug "MBUTTONDBLCLK"
EndIf
If uMsg = #WM_MBUTTONDOWN
Debug "MBUTTONDOWN"
EndIf
If uMsg = #WM_MBUTTONUP
Debug "MBUTTONUP"
EndIf
ProcedureReturn DefSubclassProc(hWnd,uMsg,wParam,lParam)
EndProcedure
OpenWindow(0,200,200,200,200,"test")
CreateGadgetList(WindowID(0))
ButtonGadget(0,10,10,180,180,"test")
SetWindowSubclass(GadgetID(0),@_subclass_cb_(),0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
PureBasic4.0
Beiträge: 785 Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1
Beitrag
von PureBasic4.0 » 31.05.2007 10:51
warum wird der Doppelklick auf dem Button nicht unterstützt? Das ist unlogisch hoch 3.
Kurz und knapp: Ich muss doch einen Timer machen, oder? Weil extra den API-Code von edel durchzukauen ist mir dann doch etwas zu kompliziert
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Kaeru Gaman
Beiträge: 17389 Registriert: 10.11.2004 03:22
Beitrag
von Kaeru Gaman » 31.05.2007 11:06
> warum wird der Doppelklick auf dem Button nicht unterstützt? Das ist unlogisch hoch 3.
im gegenteil.
der Button hat nativ nur eine Einfach-Click funktion, von Windows aus.
in keiner programmiersprache auf windows gibt es native unterstützung für doppelklick auf buttons...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
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
Beitrag
von ts-soft » 31.05.2007 11:10
Alle meine elektr. Geräte haben auch nur Einfach-Drück Knöpfe
Kaeru Gaman
Beiträge: 17389 Registriert: 10.11.2004 03:22
Beitrag
von Kaeru Gaman » 31.05.2007 11:14
yo eben. was macht ne waschmaschine beim doppelklick... die trommel vergrößern?
bei nem Button mit Doppelclick-funktion musst du dabeischreiben, dass der eine hat, sonst kommt doch keiner drauf.
> Weil extra den API-Code von edel durchzukauen ist mir dann doch etwas zu kompliziert
nu, da is doch grad ma ganix kompliziert...
du braust nur die funktion aus der PBOSL, die dir erleichtert, ne subclass zu erzeugen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
PureBasic4.0
Beiträge: 785 Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1
Beitrag
von PureBasic4.0 » 31.05.2007 12:13
kann man nicht einfach sowas hier machen?:
Code: Alles auswählen
ElseIf GadgetID = #Button_0
If EventType() = #PB_EventType_LeftDoubleClick
; Funktion bei Doppelklick
ElseIf EventType() = #PB_EventType_LeftClick
; Funktion bei einfach klick
EndIf
Funktioniert sowas
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Kaeru Gaman
Beiträge: 17389 Registriert: 10.11.2004 03:22
Beitrag
von Kaeru Gaman » 31.05.2007 12:23
DANN PROBIERS DOCH AUS!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
mueckerich
Beiträge: 220 Registriert: 13.09.2004 11:33
Wohnort: Am schönsten Flecken der Erde, zwischen PC und Motorrad
Beitrag
von mueckerich » 31.05.2007 12:38
AAAAAAAAAAAAAAAAAAUUUUUUUUUUUUUUUU!
Schrei nicht so laut, da tun mir doch gleich die Ohren weh.
"Wenn Sie glauben, mich verstanden zu haben, dann habe ich mich falsch ausgedrückt" ( Alan Greenspan)
jear
Beiträge: 288 Registriert: 17.10.2004 01:59
Wohnort: Ammerland
Beitrag
von jear » 31.05.2007 12:45
Wenn man denn unbedingt den Doppelklick braucht, ist das doch auch mit Zeitabfrage nicht kompliziert...
Code: Alles auswählen
OpenWindow(0,200,200,200,200,"test")
CreateGadgetList(WindowID(0))
ButtonGadget(0,10,10,180,180,"test")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
quit=1
Case #PB_Event_Gadget
If EventGadget() = 0
Select EventType()
Case #PB_EventType_RightClick
Debug "rechts " + Str(ix)
Case #PB_EventType_LeftClick
;Debug "links " + Str(ix)
time = ElapsedMilliseconds()
If (time - lasttime) < 500 ; ms
ix + 1 : Debug "Doppelklick " + Str(ix)
Else
lasttime = time
EndIf
Case #PB_EventType_RightDoubleClick
Debug "rechts doppel " + Str(ix)
Case #PB_EventType_LeftDoubleClick
Debug "links doppel " + Str(ix)
EndSelect
EndIf
EndSelect
Until quit
End
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
PureBasic4.0
Beiträge: 785 Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1
Beitrag
von PureBasic4.0 » 31.05.2007 14:31
Danke, der Code von jear funktioniert.
Vom Gebrüll von Kaeru tun mrir jetzt noch die Ohren weh
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64