Uhrzeit genauer als mit ElapsedMilliSeconds()?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

ts-soft hat geschrieben:Wenn ein anderes Fenster denselben Timer nutzt, so wird dieser im anderen Fenster nicht mehr funktionieren, sollte nach erstellen des Timers, ein anderes Fenster denselben Timer erstellen, funzt unser Timer nicht mehr.
Welches Fenster wenn hwnd null ist? Das gilt dann für den gesamten Erstellerprozess. Sicherlich funktioniert es nicht wenn SetTimer_() mit der selben Prozedur aber unterschiedlichem Interval benutzt wird. Da man aber die Prozedurnamen benennen kann wie man will ist das irrelevant. Selbst wenn man eine Prozedur mit demselben Code aber anderem Interval mehrmals aufrufen will (warum auch immer) kann man das leicht umegehen:

Code: Alles auswählen

Macro CreateProc(Instance)
	Procedure TimerProc#Instance(hwnd,uMsg,idEvent,dwTime)
		Static Alter
		Alter + 1
		Debug "TimerProc #" + Str(Instance + 1) + ": Ich bin Klaus und " + Str(Alter) + " alt!"		
	EndProcedure
EndMacro

Macro SetTimer(Instance,Time)
	SetTimer_(0,0,Time,@TimerProc#Instance())
EndMacro

OpenWindow(0,0,0,400,300,"untitled",#WS_OVERLAPPEDWINDOW | 1)

CreateProc(0) : SetTimer(0,250)
CreateProc(1) : SetTimer(1,600)
CreateProc(2) : SetTimer(2,1000)

While WaitWindowEvent() ! 16 : Wend
Mein Programm ist niemals alleine unter Windows.
Wenn man SetTimer_() ohne Fenster Handle benutzt dann betrifft es nicht nur den Ablauf innerhalb der eigenen Anwendung sondern auch Fremdprogramme?
Windows 10 Pro, 64-Bit / Outtakes | Derek
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

Beitrag von ts-soft »

Ohne hWnd hat SetTimer bei mir noch nie zuverlässig funktioniert, auch bei
nur einem Timer. In den meisten Sprachen ist der Timer auch als
Fensterelement definiert, wird schon seine Gründe haben.
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
Antworten