Časovač – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Časovač – C / C++ – Fórum – Programujte.comČasovač – C / C++ – Fórum – Programujte.com

 

aTTix0
Návštěvník
13. 1. 2012   #1
-
0
-

Zdravím, potřebuji udělat časovač. Tedy, aby třeba každou pátou vteřinu, aby se provedl nějaký příkaz. Dělám to ve WinAPI

zatím jsem zkoušel 

while(GetMessage(&msg, NULL, 0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);

		t = time(0);

		if(localtime(&t)->tm_sec = 00 || 05 || 10 || 15 || 20 || 25 || 30 || 35 || 40 || 45 || 50 || 55)
		{
			out << localtime(&t)->tm_sec;
		}
		
	}

A pak mě napadlo udělat ještě prostě 

while(GetMessage(&msg, NULL, 0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
		
		
		while(now + 5 > localtime(&t)->tm_sec)
		{	
			t = time(0);

			if(localtime(&t)->tm_sec != nume) {
				out << localtime(&t)->tm_sec << "\n";
				nume = localtime(&t)->tm_sec;
			} else {
				out.close();
			}
			
		}
		
	}

Tím si ale znemožním, aby fungovali další řádky, tedy program je zasmyčkován. Vím, že tady to funguje jen jednou do těch pěti vteřin. Ale když to zkouším dát do hlavní smyčky, tak tam ten čas běhá nějak divně. Prostě mi to nehází  třeba vteřiny  1 2 3 4, ale 4 6 4 6 4 6 5 4 5. 

Mohl by mi někdo poradit jak to udělám ve WinAPI ? Děkuji za odpověd

Nahlásit jako SPAM
IP: 88.100.180.–
yaqwsx+9
Posthunter
13. 1. 2012   #2
-
0
-

Opět přes proceduru okna. Pamatuj si - ve WinAPI je okno klíč ke všemu. Na smyčku pro vybírání zprávnemusíš v podstatě vůbec sahat. Ta je ve všech programech stejná.

Přečti si, jak se ve WinAPI pracuje s timery: http://www.builder.cz/art/cpp/winapi11.html

Nahlásit jako SPAM
IP: 85.160.94.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
_tomas
~ Anonymní uživatel
22 příspěvků
13. 1. 2012   #3
-
0
-

   

if(localtime(&t)->tm_sec = 00 || 05 || 10 || 15 || 20 || 25 || 30 || 35 || 40 || 45 || 50 || 55)

Toto nebude fungovat ako ocakavas
1. priradzujes, nie porovnavas (pouzi ==), do tm_sec priradzujes hodnoru true (00 || 05 || 10 || 15 || 20 || 25 || 30 || 35 || 40 || 45 || 50 || 55 = true, boolovska logika)
2. tvoja podmienka je stale pravddiva
3. mozno by stacilo

if(localtime(&t)->tm_sec % 5 == 0)

resp

if(!(localtime(&t)->tm_sec % 5))
Nahlásit jako SPAM
IP: 147.175.178.–
aTTix0
Návštěvník
14. 1. 2012   #4
-
0
-

ach pardon, to byl jen překlep, jinak tam měli bejt samozřejmě dvě rovnase

Nahlásit jako SPAM
IP: 88.100.180.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 22 hostů

Podobná vlákna

Časovač — založil zgerbiak

Casovac — založil Odin

časovač — založil Pikin88

časovač — založil xeonikx

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý