<?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[GetAsyncKeyState problem]]></title><description><![CDATA[<p>guten tag liebe community<br />
ich wollte fragen ob es möglch ist eine void funktion di in einer for schleufe aufgefufen wird<br />
durch einen tasten druck, zb. o dauerhaft zu aktiviern, so dasser des immer macht ?(mir fällt grad net des richtige word ein :))</p>
<p>also ich hab dise code:</p>
<pre><code class="language-cpp">void bla ()
{
    if(GetAsyncKeyState('O'))
{
die funktion
}
}
</code></pre>
<p>so ruf ich sie auf :<br />
[cpp]void aufrufen()<br />
{<br />
for(;; )<br />
{<br />
Bla();<br />
...();<br />
Sleep(30);<br />
}<br />
}</p>
<p>so jetzt noch mal die frage deutlicher :<br />
ist es möglich, das wenn ich die taste o drücke, das er des dann so lange macht bis er ne ander taste gedrückt bekommt, z.B. ö also</p>
<p>ich hoffe ich war deutlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272394/getasynckeystate-problem</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 22:12:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272394.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Aug 2010 00:52:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to GetAsyncKeyState problem on Tue, 17 Aug 2010 00:52:59 GMT]]></title><description><![CDATA[<p>guten tag liebe community<br />
ich wollte fragen ob es möglch ist eine void funktion di in einer for schleufe aufgefufen wird<br />
durch einen tasten druck, zb. o dauerhaft zu aktiviern, so dasser des immer macht ?(mir fällt grad net des richtige word ein :))</p>
<p>also ich hab dise code:</p>
<pre><code class="language-cpp">void bla ()
{
    if(GetAsyncKeyState('O'))
{
die funktion
}
}
</code></pre>
<p>so ruf ich sie auf :<br />
[cpp]void aufrufen()<br />
{<br />
for(;; )<br />
{<br />
Bla();<br />
...();<br />
Sleep(30);<br />
}<br />
}</p>
<p>so jetzt noch mal die frage deutlicher :<br />
ist es möglich, das wenn ich die taste o drücke, das er des dann so lange macht bis er ne ander taste gedrückt bekommt, z.B. ö also</p>
<p>ich hoffe ich war deutlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940800</guid><dc:creator><![CDATA[cracy112]]></dc:creator><pubDate>Tue, 17 Aug 2010 00:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to GetAsyncKeyState problem on Tue, 17 Aug 2010 01:16:49 GMT]]></title><description><![CDATA[<p>cracy112 schrieb:</p>
<blockquote>
<p>ich hoffe ich war deutlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Die Hoffnung stribt zuletzt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Also nein, warst du nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940801</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 17 Aug 2010 01:16:49 GMT</pubDate></item><item><title><![CDATA[Reply to GetAsyncKeyState problem on Tue, 17 Aug 2010 05:18:11 GMT]]></title><description><![CDATA[<p>Sieh dir mal an, wie Threads funktionieren. Wenn die Taste gedrückt wird, startest du einen Thread, der deine Funktion in einer Schleife ausführt, und bei einem anderen Tastendruck beendest du ihn wieder (oder hältst ihn an).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940810</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 17 Aug 2010 05:18:11 GMT</pubDate></item><item><title><![CDATA[Reply to GetAsyncKeyState problem on Tue, 17 Aug 2010 11:48:16 GMT]]></title><description><![CDATA[<p>also ok ich bersuchs nochmal deútlicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
also dieses void bla oder was ich da genommen habe<br />
des wird ja immer wieder von dem anderen void aifgefufen durch die schleife<br />
so wenn man nichts drückt, dann passiert in dem void bla nichts ...<br />
wenn man aber ine bestimmte taste drückt, z.B. o soll er das Void was in der schleife ausgeführt wird immer ausführen, biss man eine gewisse taste drückt also so</p>
<p>bla wird von der schleife aufgerufen<br />
---|---<br />
die taste wurde nicht gedrückt die er bei GetAsyncKeyState hätte bekommen müssen<br />
---|---<br />
bla wird von der schleife aufgerufen<br />
---|---<br />
die taste wurde gedrückt also führt es jetzt das eine aus was ich unter GetAsyncKeyState gersetzt habe also des hier</p>
<pre><code class="language-cpp">if(GetAsyncKeyState('O'))
{
die funktion //  &lt;------
</code></pre>
<p>---|---<br />
bla wird von der schleife aufgerufen<br />
---|---<br />
taste wiud nicght mehr gedrückt, er führt aber trotzdem die fuktion aus weil sie beim vorhärigen mahle gedrückt worden war<br />
---|---<br />
bla wird von der schleife aufgerufen<br />
---|---<br />
eine andere taste wurde gesdrückt sagen wir die btaste P<br />
---|---<br />
jetzt wird des in Bla nicht mehr ausgeführt, weil die taste p gesrückt wurde</p>
<p>... usw</p>
<p>dass sollte aber deutlich sein oder <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940951</guid><dc:creator><![CDATA[cracy112]]></dc:creator><pubDate>Tue, 17 Aug 2010 11:48:16 GMT</pubDate></item><item><title><![CDATA[Reply to GetAsyncKeyState problem on Tue, 17 Aug 2010 12:20:07 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Ich hätte dir eher zu einem schönen Callback-System mit Boost.Function, Boost.Bind und Boost.Thread geraten. Aber in meinen Augen bist du noch Anfänger, also lerne noch mal die Grundlagen und lies dir <a href="http://www.tty1.net/smart-questions_de.html" rel="nofollow">http://www.tty1.net/smart-questions_de.html</a> durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940968</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Tue, 17 Aug 2010 12:20:07 GMT</pubDate></item><item><title><![CDATA[Reply to GetAsyncKeyState problem on Tue, 17 Aug 2010 14:14:46 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24002">@cracy112</a>:<br />
Deutlich ist was anderes, aber jetzt kann man wenigstens mal raten.</p>
<p>Du brauchst eine Variable (global, oder besser als Member einer Klasse) in der du abspeicherst welche Taste zuletzt gedrückt war. Oder welche Funktion beim nächsten Aufruf von bla() ausgeführt werden soll.</p>
<pre><code class="language-cpp">int whatToDo = 0;

void bla()
{
    if (GetAsynkKeyState(...)...)
        whatToDo = 1;
    else if (GetAsynkKeyState(...)...)
        whatToDo = 2;

    if (whatToDo == 1)
        do1();
    else if (whatToDo == 2)
        do2();
    else
        doElse();
}
</code></pre>
<p>Natürlich kann man statt der Variable auch Funktionszeiger oder tr1::function nehmen, aber das ist denke ich mal die einfachste Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941043</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 17 Aug 2010 14:14:46 GMT</pubDate></item><item><title><![CDATA[Reply to GetAsyncKeyState problem on Tue, 17 Aug 2010 19:56:39 GMT]]></title><description><![CDATA[<p>hab jetzt anders selbt hinbekommen ^^</p>
<pre><code class="language-cpp">if(bla==true)
</code></pre>
<p>das hab ch darein gesetzt<br />
und so ruf ichs auf:</p>
<pre><code class="language-cpp">if (GetAsyncKeyState('M')&amp;1)
{
bla = bla==false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1941215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941215</guid><dc:creator><![CDATA[cracy112]]></dc:creator><pubDate>Tue, 17 Aug 2010 19:56:39 GMT</pubDate></item><item><title><![CDATA[Reply to GetAsyncKeyState problem on Wed, 18 Aug 2010 01:49:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">bla = bla==false;
</code></pre>
<p>-&gt; <code>bla = !bla;</code> ;o)</p>
<pre><code class="language-cpp">if (GetAsyncKeyState('M')&amp;1)
</code></pre>
<p>würd ich im übrigen in ne extra Funktion packen - ich mag API-Fkt eh nie direkt im Code nutzen - falls man irgendwann doch mal denkt, dass man das ganze evtl auch mal auf ne andere plattform portieren könnte, sucht man dann ewig, wo überall man die api-fkt aufruft...</p>
<pre><code class="language-cpp">/*../windows/key_codes.h*/
#define NOMINMAX
/*noch mehr böse winapi-makros durch schalter deaktiveren*/
#include &quot;windows.h&quot;
#undef NOMINMAX
#undef IN
#undef OUT
/*noch mehr böse winapi-makros deaktiveren, für die es keine schalter gibt*/

enum key_codes
{
  A = 'A', /*...*/
  NUM_PAD_0 = ...,
...
};

namespace detail
{
  bool key_pressed(key_codes key)
  {
    return 0x01&amp;GetAsyncKeyState(int(key));
  }
  bool key_pressed_since_last_call(key_codes key)
  {
    return 0x02&amp;GetAsyncKeyState(int(key));
  }
}
</code></pre>
<pre><code class="language-cpp">/*../posix/key_codes.h*/
enum key_codes
{
  /*...*/
};

/*...*/
</code></pre>
<pre><code class="language-cpp">#if defined(_WIN32) || defined(_WIN64)
#  include &quot;windows/key_codes.h&quot;
#elif defined(kein_plan_worauf_man_hier_testet)
#  include &quot;posix/key_codes.h&quot;
#else
#  error not supported platform
#endif

bool key_pressed(key_codes key)
{
  return detail::key_pressed(key);
}
bool key_pressed_since_last_call(key_codes key)
{
  return detail::key_pressed_since_last_call(key);
}
</code></pre>
<p>so in etwa sollte es funktionieren - und die paar zeilen mehr sollten nicht weiter schlimm sein - ok, die enums werden ein wenig schreibarbeit sein - aber ansonsten sollte es sich vom aufwand her nichts nehmen.</p>
<p>bb</p>
<p>PS: Windows Key-Codes gibts hier:<br />
<a href="http://msdn.microsoft.com/en-us/library/dd375731%28v=VS.85%29.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/dd375731%28v=VS.85%29.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941265</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 18 Aug 2010 01:49:07 GMT</pubDate></item></channel></rss>