<?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[Tasten-Nachrichten kommen nicht an]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Anwendung, bei der einige Befehle per Menü und per Tastatur erreichbar sind.</p>
<ul>
<li>Esc: Abbrechen</li>
<li>F10: Speichern</li>
<li>F9: Speichern und weiter</li>
</ul>
<p>Die ersten beiden haben mal funktioniert und neuerdings tun sie es nicht mehr.<br />
Ich habe schon mit Spy++ geguckt, bei F10 fühlt sich das Menü angesprochen, die anderen beiden bewirken nix. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Wo biegen die falsch ab?</p>
<p>Der Cursor steht in einem von CEdit abgeleiteten Control.<br />
PS: Funktioniert aber auch bei anderen Controls nicht.</p>
<p>Es ist eine SDI mit Formviews.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146848/tasten-nachrichten-kommen-nicht-an</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 18:53:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146848.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 May 2006 13:13:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tasten-Nachrichten kommen nicht an on Thu, 11 May 2006 13:15:04 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Anwendung, bei der einige Befehle per Menü und per Tastatur erreichbar sind.</p>
<ul>
<li>Esc: Abbrechen</li>
<li>F10: Speichern</li>
<li>F9: Speichern und weiter</li>
</ul>
<p>Die ersten beiden haben mal funktioniert und neuerdings tun sie es nicht mehr.<br />
Ich habe schon mit Spy++ geguckt, bei F10 fühlt sich das Menü angesprochen, die anderen beiden bewirken nix. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Wo biegen die falsch ab?</p>
<p>Der Cursor steht in einem von CEdit abgeleiteten Control.<br />
PS: Funktioniert aber auch bei anderen Controls nicht.</p>
<p>Es ist eine SDI mit Formviews.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1055632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1055632</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Thu, 11 May 2006 13:15:04 GMT</pubDate></item><item><title><![CDATA[Reply to Tasten-Nachrichten kommen nicht an on Thu, 11 May 2006 13:39:32 GMT]]></title><description><![CDATA[<p>Hast Du einen Accelerator definiert?<br />
Hast Du eine eigene PreTranslateMessage Funktion, die evtl. den default nicht aufruft?</p>
<p>F10 löst immer das Systemmenü für die Keyboardeingabe aus. Das ist Standard!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1055652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1055652</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 11 May 2006 13:39:32 GMT</pubDate></item><item><title><![CDATA[Reply to Tasten-Nachrichten kommen nicht an on Thu, 11 May 2006 13:53:50 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Hast Du einen Accelerator definiert?</p>
</blockquote>
<p>Ja.</p>
<blockquote>
<p>Hast Du eine eigene PreTranslateMessage Funktion, die evtl. den default nicht aufruft?</p>
</blockquote>
<p>Nicht dass ich wüsste, ich habe schon gesucht. (Nach VK_F9)</p>
<blockquote>
<p>F10 löst immer das Systemmenü für die Keyboardeingabe aus. Das ist Standard!</p>
</blockquote>
<p>Wie werde ich das los? (Es ging doch schon mal...)<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1055662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1055662</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Thu, 11 May 2006 13:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to Tasten-Nachrichten kommen nicht an on Thu, 11 May 2006 14:04:34 GMT]]></title><description><![CDATA[<p>Wie sieht Dein PreTranslateMessage aus?<br />
Imho frisst die Standfard Implementierung der CFormView::PreTranlateMessage (IsDialogMessage) die Tastatureingaben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1055672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1055672</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 11 May 2006 14:04:34 GMT</pubDate></item><item><title><![CDATA[Reply to Tasten-Nachrichten kommen nicht an on Thu, 11 May 2006 14:10:07 GMT]]></title><description><![CDATA[<p>Ich habe das mal so gelöst wie in dem nachfolgenden Beispiel.<br />
CDialogView ist auch ein CFormView und ich habe in der MDI APplikation auf dem MDI Child bzw. im Mainframe Acceleratoren!<br />
Deshalb bekommen die Parents Tastatureingaben zuerst angeboten.</p>
<pre><code class="language-cpp">BOOL CDialogView::PreTranslateMessage(MSG* pMsg)
{
	ASSERT(pMsg != NULL);
	ASSERT_VALID(this);
	ASSERT(m_hWnd != NULL);

// don't translate dialog messages when in Shift+F1 help mode
	CFrameWnd* pFrameWnd = GetTopLevelFrame();
	if (pFrameWnd != NULL &amp;&amp; pFrameWnd-&gt;m_bHelpMode)
		return FALSE;

// since 'IsDialogMessage' will eat frame window accelerators,
//   we call the frame window's PreTranslateMessage first
	if ((pFrameWnd = GetParentFrame()) != NULL)	{
		if (pFrameWnd-&gt;PreTranslateMessage(pMsg))
		// eaten by frame accelerator
			return TRUE;        
	// check for parent of the frame in case of MDI
		if ((pFrameWnd = pFrameWnd-&gt;GetParentFrame()) != NULL &amp;&amp;
		 	pFrameWnd-&gt;PreTranslateMessage(pMsg))
		 // eaten by frame accelerator
			return TRUE;        
	}

/* filter both messages to dialog and from children
 * but only if there is a Child that has the Focus,
 * if all children are Disabled, and CDialog has the Focus 
 * IsDialogMessage will eat all WM_KEYDOWN and WM_SYSKEYDOWN */
	if (pMsg-&gt;message &gt;= WM_KEYFIRST &amp;&amp; 
		pMsg-&gt;message &lt;= WM_KEYLAST &amp;&amp;
		::IsChild(m_hWnd,::GetFocus()))
	// OK allow to eat it		
		return ::IsDialogMessage(m_hWnd, pMsg);
	return FALSE;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1055679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1055679</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 11 May 2006 14:10:07 GMT</pubDate></item><item><title><![CDATA[Reply to Tasten-Nachrichten kommen nicht an on Fri, 12 May 2006 08:02:36 GMT]]></title><description><![CDATA[<p>Moin!</p>
<p>Also ich habe mich daran jetzt mal versucht:</p>
<pre><code class="language-cpp">BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
{
	// Wurde eine Taste gedrückt?
	if (pMsg-&gt;message == WM_KEYDOWN)
	{
		UINT  nKeyCode = pMsg-&gt;wParam; // virtual key code of the key pressed
		switch (nKeyCode)
		{
		case VK_ESCAPE:
			SendMessage(WM_COMMAND, ID_BEARBEITEN_ABBRECHEN);
			break;
		case VK_F9:
			SendMessage(WM_COMMAND, ID_BEARBEITEN_SPEICHERN_NEU);
			break;
		default:
			break;
		}
	}
	else if (pMsg-&gt;message == WM_SYSKEYDOWN)
	{
		SendMessage(WM_COMMAND, ID_BEARBEITEN_SPEICHERN);
	}

	return CFrameWnd::PreTranslateMessage(pMsg);
}
</code></pre>
<p>Das funktioniert soweit schon ganz gut, ich muss jetzt mal gucken, welche Tasten noch alle behandelt werden müssen. <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="🙂"
    /></p>
<p>Leider hat das WM_SYSKEYDOWN einen Haken: Nicht nur F10 sondern auch die Alt-Taste laufen in diese if. <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 />
Wie gucke ich nun, ob es die F10 Taste war? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056154</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Fri, 12 May 2006 08:02:36 GMT</pubDate></item><item><title><![CDATA[Reply to Tasten-Nachrichten kommen nicht an on Fri, 12 May 2006 08:10:35 GMT]]></title><description><![CDATA[<p>Ich mag Acceleratoren lieber, als dieses handgestrickte.<br />
Dein Code berücksichtig nicht das Umschalt/Strg/Alt gedrückt wurden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056164</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 12 May 2006 08:10:35 GMT</pubDate></item><item><title><![CDATA[Reply to Tasten-Nachrichten kommen nicht an on Fri, 12 May 2006 08:13:42 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Ich mag Acceleratoren lieber, als dieses handgestrickte.<br />
Dein Code berücksichtig nicht das Umschalt/Strg/Alt gedrückt wurden.</p>
</blockquote>
<p>Ich mag sie ja auch lieber, aber sie funktionieren doch nicht mehr, deswegen doch meine Frage gestern. <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="🙄"
    /></p>
<p>Das mit der Alt Taste habe ich jetzt so:</p>
<pre><code class="language-cpp">else if ((pMsg-&gt;message == WM_SYSKEYDOWN) &amp;&amp; (GetAsyncKeyState(VK_F10)))
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1056167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056167</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Fri, 12 May 2006 08:13:42 GMT</pubDate></item></channel></rss>