Doppelklick

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Doppelklick

Beitrag von KatSeiko »

Ich möchte in ein Programm einen Doppelklick einbauen (Doppelklick auf eine Grafik verändert sie). Aber wie mache ich das am Besten? Bisher habe ich mir das so weit zusammengeplant: Ich erstelle mir eine Vatiable, in der ich nachher speichere, wann sie zuletzt geklickt wurde und setze sie erst mal auf die Zeit des Programmstarts. (Mittels ElapsedMilliseconds()) Wenn ich nun auf die Grafik klicke, frage ich zuerst ab, wann das letzte Mal geklickt wurde (If LastClick+ClickIntervall >= ElapsedMilliseconds()) und wenn diese Bedingung zutrifft, wird eben die Aktion ausgelöst...

Nun habe ich folgende Frage: Wie komme ich von PureBasic aus an die Zeit ran, die Windows als Timing für einen Doppelklick verwendet? Das kann man einstellen, also muss das irgendwo gespeichert sein...
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag von gnasen »

Mit einem Callback und dem Abfangen der "WM_LBUTTONDBLCLK" Nachricht, sollte das kein Problem sein.
Nur kennt PB diese Konstante nicht und ich kann nicht viel mit "&H203" anfangen... Hexadezimal isses schonmal nicht, aber was dann?

EDIT:
Ich Tröte hab mich vertippt...

#WM_LBUTTONDBLCLK tuts wunderbar

Code: Alles auswählen

If OpenWindow(0, 100, 200, 195, 260, "PureBasic Window")

  Repeat
    EventID = WaitWindowEvent()
    
    If EventID = #WM_LBUTTONDBLCLK
      Debug "DoubleClick"
    EndIf
     
  Until EventID = #PB_Event_CloseWindow
  
EndIf

End
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

EventType()? Schon mal gehört?
Dann klappt's auch mit 'nem ImageGadget()...
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Meinst du so?

Code: Alles auswählen

CreateImage(0,100,30)
StartDrawing(ImageOutput(0))
DrawText(30,7,"- AN -")
StopDrawing()

CreateImage(1,100,30)
StartDrawing(ImageOutput(1))
DrawText(25,7,"- AUS -")
StopDrawing()

OpenWindow(0,0,0,400,300,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ImageGadget(0,10,10,0,0,ImageID(0))

Repeat
	EventID = WaitWindowEvent()
	
	If EventID = #PB_Event_Gadget And EventType() = #PB_EventType_LeftDoubleClick
		State = 1 - State
		SetGadgetState(0,ImageID(State))
	EndIf
Until EventID = #PB_Event_CloseWindow
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Beitrag von KatSeiko »

Okay, danke!
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Antworten