<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Restzeit anzeigen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>hätte da eine kleine Frage - ich führe eine Funktion solange aus, bis ein Timer abgelaufen ist:</p>
<pre><code class="language-cpp">Timer = ::CreateWaitableTimer( 0, true, 0 );
endTime.QuadPart *= -10000;
::SetWaitableTimer( Timer, &amp;endTime, 0, 0, 0, false );

while(WaitForSingleObject( Timer, 0 ) != WAIT_OBJECT_0)
{
Start();
}
</code></pre>
<p>Nun möchte ich auch gern anzeigen, wieviel Zeit noch verbleibt. Wie stelle ich das an?</p>
<p>Ich hab es so versucht:</p>
<pre><code class="language-cpp">CString Text = &quot;Restzeit: &quot; + IntToCString((int)endTime.QuadPart) + &quot; Sekunden&quot;;
</code></pre>
<p>Aber endTime bleibt wohl immer konstant....</p>
<p>Weiß jemand Rat?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183880/restzeit-anzeigen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 23:55:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183880.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 Jun 2007 20:41:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Restzeit anzeigen? on Sat, 09 Jun 2007 20:41:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hätte da eine kleine Frage - ich führe eine Funktion solange aus, bis ein Timer abgelaufen ist:</p>
<pre><code class="language-cpp">Timer = ::CreateWaitableTimer( 0, true, 0 );
endTime.QuadPart *= -10000;
::SetWaitableTimer( Timer, &amp;endTime, 0, 0, 0, false );

while(WaitForSingleObject( Timer, 0 ) != WAIT_OBJECT_0)
{
Start();
}
</code></pre>
<p>Nun möchte ich auch gern anzeigen, wieviel Zeit noch verbleibt. Wie stelle ich das an?</p>
<p>Ich hab es so versucht:</p>
<pre><code class="language-cpp">CString Text = &quot;Restzeit: &quot; + IntToCString((int)endTime.QuadPart) + &quot; Sekunden&quot;;
</code></pre>
<p>Aber endTime bleibt wohl immer konstant....</p>
<p>Weiß jemand Rat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302227</guid><dc:creator><![CDATA[Querdenker]]></dc:creator><pubDate>Sat, 09 Jun 2007 20:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to Restzeit anzeigen? on Sat, 09 Jun 2007 21:04:51 GMT]]></title><description><![CDATA[<p>Hi !<br />
Du könntest ja die aktuelle Zeit periodisch abfragen, die Differenz zu<br />
endTime bilden und anzeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302230</guid><dc:creator><![CDATA[proggingmania]]></dc:creator><pubDate>Sat, 09 Jun 2007 21:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to Restzeit anzeigen? on Sat, 09 Jun 2007 21:33:57 GMT]]></title><description><![CDATA[<p>Und wie frage ich die aktuelle Zeit ab?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302237</guid><dc:creator><![CDATA[Querdenker]]></dc:creator><pubDate>Sat, 09 Jun 2007 21:33:57 GMT</pubDate></item><item><title><![CDATA[Reply to Restzeit anzeigen? on Sat, 09 Jun 2007 21:40:03 GMT]]></title><description><![CDATA[<p>Najanun, da du ja mit der Winapi arbeiten möchtest, kannst du ja die GetSystemTime -Funktion benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302239</guid><dc:creator><![CDATA[proggingmania]]></dc:creator><pubDate>Sat, 09 Jun 2007 21:40:03 GMT</pubDate></item><item><title><![CDATA[Reply to Restzeit anzeigen? on Sat, 09 Jun 2007 22:59:53 GMT]]></title><description><![CDATA[<p>Ah ok, da gibts bei google ne Menge Beispiele zu, vielen dank, das hilft mir weiter!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302250</guid><dc:creator><![CDATA[Querdenker]]></dc:creator><pubDate>Sat, 09 Jun 2007 22:59:53 GMT</pubDate></item><item><title><![CDATA[Reply to Restzeit anzeigen? on Sat, 09 Jun 2007 23:26:33 GMT]]></title><description><![CDATA[<p>Wobei, der Codeausschnitt sieht auch etwas komisch aus. Deine while-schleife</p>
<pre><code class="language-cpp">while(WaitForSingleObject( Timer, 0 ) != WAIT_OBJECT_0)
</code></pre>
<p>erzeugt keinen Wait auf den Timer, sondern prüft nur dessen Zustand und kommt sofort zurück. (dwMilliseconds = 0). Das bedeuted das die Schleife quasi in Echtzeit das Timerobjekt solange polled bis es WAIT_OBJECT_0 zurückgibt. Da könntest Du Dir den Timer auch gleich sparen, bzw. der eigendliche Vorteil des Timers, den Thread im Suspend-Mode auf dessen Ablauf warten zu lassen geht komplett verloren...</p>
<p>Wenn Du die bereits vergangene Zeit im Sekundentakt ausgeben willst könntest Du das viel geschickter machen an de Stelle. Setz den zweiten Parameter von WaitForSingleObject auf 1000ms. Dann warted die Funktion immer entweder genau eine Sekunde oder bis der Timer abgelaufen ist. Nach einer Sekuden kannst Du dann die aktuell verstrichene Zeit ausgeben (Halt im sekudentakt). also ca so:</p>
<pre><code class="language-cpp">int zeit = 0;

while(WaitForSingleObject( Timer, 1000 ) != WAIT_OBJECT_0)
{
   // der Teil wird alle 1000ms ausgeführt solange der Timer noch nicht abgelaufen ist
   zeit++;
   CString Text = &quot;Verstrichene Zeit: &quot; + IntToCString(zeit);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1302258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302258</guid><dc:creator><![CDATA[loks]]></dc:creator><pubDate>Sat, 09 Jun 2007 23:26:33 GMT</pubDate></item><item><title><![CDATA[Reply to Restzeit anzeigen? on Sun, 10 Jun 2007 09:01:02 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-403.html" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302319</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sun, 10 Jun 2007 09:01:02 GMT</pubDate></item><item><title><![CDATA[Reply to Restzeit anzeigen? on Sun, 10 Jun 2007 12:04:50 GMT]]></title><description><![CDATA[<p>Also ich habs jetzt so gebaut:</p>
<pre><code class="language-cpp">int StartZeit = clock(); 
int RestZeit = 0;
...
while(WaitForSingleObject( Timer, 0 ) != WAIT_OBJECT_0)
		{		
			Start();
			// Restzeit = Countdown - vergangene Zeit. clock() liefert die aktuelle Zeit
			RestZeit = (int)Countdown - (clock() - StartZeit)/CLOCKS_PER_SEC;
			m_RestzeitText = &quot;Restzeit: &quot; + TimeFormat(RestZeit/3600 % 60) + &quot;:&quot; + TimeFormat(RestZeit/60 % 60) + &quot;:&quot; + TimeFormat(RestZeit % 60);	
		}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1302386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302386</guid><dc:creator><![CDATA[Querdenker]]></dc:creator><pubDate>Sun, 10 Jun 2007 12:04:50 GMT</pubDate></item><item><title><![CDATA[Reply to Restzeit anzeigen? on Sun, 10 Jun 2007 12:58:41 GMT]]></title><description><![CDATA[<p>Ähm.<br />
Hat es einen bestimmten Grund dass du einen &quot;waitable timer&quot; verwendest? Wenn dieser nicht irgendwo in Code vergraben ist den du nicht gepostet hast würde ich einfach GetTickCount() verwenden:</p>
<pre><code class="language-cpp">void foo(DWORD milliSec)
{
    DWORD now = ::GetTickCount();
    while(1)
    {
        DWORD diff = ::GetTickCount() - now;
        if (diff &gt;= milliSec)
            break;
        else
           ZeigeRestzeit(milliSec - diff);
        Blubb();
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1302431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302431</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 10 Jun 2007 12:58:41 GMT</pubDate></item></channel></rss>