<?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[Tastendruck simulieren]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie schaff ich es, wenn ich in einer Dialog-basierten Anwendung eine Taste drücke (z.B. 5), dass dies dann in mein Editfeld auf dem Dialog übernommen wird und der entsprechende Button mit der Aufschrift der gedrückten Taste kurz gedrückt wird? (Als Beispiel sei der Windows-Taschenrechner erwähnt - genau so sollte das bei mir aussehen).<br />
Ich habe mir schon einige Einträge aus dem Archiv angesehen, doch die haben bei mir nicht funktioniert.<br />
Folgender Code z.B. hat mir immer die entsprechende Zahl in dreifacher Ausfertigung ausgegeben, wenn ich die Zahl über die Tastatur eingebe. (Über den Button per Mausklick funktioniert's aber einwandfrei!)</p>
<p>Code:</p>
<pre><code class="language-cpp">#define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) &amp; 0x8000) ? 1 : 0)

BOOL CWinCalcDlg::PreTranslateMessage(MSG* pMsg) 
{
    if          ( KEY_DOWN(VK_NUMPAD1) )    OnButton1();
    else if ( KEY_DOWN(VK_NUMPAD2) )    OnButton2();
        else if ( KEY_DOWN(VK_NUMPAD3) )    OnButton3();
    else if ( KEY_DOWN(VK_NUMPAD4) )    OnButton4();
    else if ( KEY_DOWN(VK_NUMPAD5) )    OnButton5();
    else if ( KEY_DOWN(VK_NUMPAD6) )    OnButton6();
    else if ( KEY_DOWN(VK_NUMPAD7) )    OnButton7();
    else if ( KEY_DOWN(VK_NUMPAD8) )    OnButton8();
    else if ( KEY_DOWN(VK_NUMPAD9) )    OnButton9();
    else if ( KEY_DOWN(VK_NUMPAD0) )    OnButton0();
    else if ( KEY_DOWN(VK_DECIMAL) )    OnBUTTONkomma();

    return CDialog::PreTranslateMessage(pMsg);

}
// Beispiel für Behandlungsroutine
void CWinCalcDlg::OnButton0() 
{
    UpdateData(TRUE);
    m_Edit_ergebnis += &quot;0&quot;;  //m_Edit_ergebnis entspricht Editfeld
    UpdateData(FALSE);
}
</code></pre>
<p>Bin um jede Hilfe dankbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/5719/tastendruck-simulieren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 11:54:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/5719.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 May 2003 16:49:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tastendruck simulieren on Thu, 08 May 2003 16:49:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie schaff ich es, wenn ich in einer Dialog-basierten Anwendung eine Taste drücke (z.B. 5), dass dies dann in mein Editfeld auf dem Dialog übernommen wird und der entsprechende Button mit der Aufschrift der gedrückten Taste kurz gedrückt wird? (Als Beispiel sei der Windows-Taschenrechner erwähnt - genau so sollte das bei mir aussehen).<br />
Ich habe mir schon einige Einträge aus dem Archiv angesehen, doch die haben bei mir nicht funktioniert.<br />
Folgender Code z.B. hat mir immer die entsprechende Zahl in dreifacher Ausfertigung ausgegeben, wenn ich die Zahl über die Tastatur eingebe. (Über den Button per Mausklick funktioniert's aber einwandfrei!)</p>
<p>Code:</p>
<pre><code class="language-cpp">#define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) &amp; 0x8000) ? 1 : 0)

BOOL CWinCalcDlg::PreTranslateMessage(MSG* pMsg) 
{
    if          ( KEY_DOWN(VK_NUMPAD1) )    OnButton1();
    else if ( KEY_DOWN(VK_NUMPAD2) )    OnButton2();
        else if ( KEY_DOWN(VK_NUMPAD3) )    OnButton3();
    else if ( KEY_DOWN(VK_NUMPAD4) )    OnButton4();
    else if ( KEY_DOWN(VK_NUMPAD5) )    OnButton5();
    else if ( KEY_DOWN(VK_NUMPAD6) )    OnButton6();
    else if ( KEY_DOWN(VK_NUMPAD7) )    OnButton7();
    else if ( KEY_DOWN(VK_NUMPAD8) )    OnButton8();
    else if ( KEY_DOWN(VK_NUMPAD9) )    OnButton9();
    else if ( KEY_DOWN(VK_NUMPAD0) )    OnButton0();
    else if ( KEY_DOWN(VK_DECIMAL) )    OnBUTTONkomma();

    return CDialog::PreTranslateMessage(pMsg);

}
// Beispiel für Behandlungsroutine
void CWinCalcDlg::OnButton0() 
{
    UpdateData(TRUE);
    m_Edit_ergebnis += &quot;0&quot;;  //m_Edit_ergebnis entspricht Editfeld
    UpdateData(FALSE);
}
</code></pre>
<p>Bin um jede Hilfe dankbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/27827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/27827</guid><dc:creator><![CDATA[JeGr]]></dc:creator><pubDate>Thu, 08 May 2003 16:49:00 GMT</pubDate></item><item><title><![CDATA[Reply to Tastendruck simulieren on Fri, 09 May 2003 06:29:00 GMT]]></title><description><![CDATA[<p>Als erstes würde ich abfangen, dass die Controls den Fokus nicht bekommen können.<br />
Als zweites die Tasten in die Acceleratortabelle eintragen, so dass, egal, ob die Messages vom Buttondruck oder der Tastatur kommen, immer WM_COMMAND-Messages ausgelöst werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/27828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/27828</guid><dc:creator><![CDATA[RenéG]]></dc:creator><pubDate>Fri, 09 May 2003 06:29:00 GMT</pubDate></item></channel></rss>