<?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[Frage zu PreTranslateMessage]]></title><description><![CDATA[<p>Hi,</p>
<p>um Nachrichten abzufangen wählt man gewöhnlich folgenden Ansatz:</p>
<pre><code class="language-cpp">BOOL CMainDlg::PreTranslateMessage(MSG* pMsg)
{
    //hier kann man eine Mausbewegung abfangen
    if( pMsg-&gt;message == WM_MOUSEMOVE )
    {
        //tue irgendwas...
    }

    //hier kann man abfragen, ob ein Key gedrückt wurde
    if( pMsg-&gt;message == WM_KEYDOWN )
    {
        //tue irgendwas...
    }

    return CDialog::PreTranslateMessage(pMsg);
}
</code></pre>
<p>Soweit so gut. Wenn ich aber einen UnterDialog in meinem HauptDialog wie folgt einbeziehe:</p>
<pre><code class="language-cpp">void CMainDlg::ActivateSubDlg()
{
    m_SubDlg.Create(IDD_SUB_DIALOG, this); //wobei m_SubDlg eine Variable des UnterDialogs ist.
    m_SubDlg.ShowWindow(SW_SHOW);

    //tue irgendwas...

}
</code></pre>
<p>...dann kann ich in meinem UnterDialog mit PreTranslateMessage die Nachricht für's Key-Drücken nicht mehr abfangen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">BOOL SubDlg::PreTranslateMessage(MSG* pMsg)
{
    if( pMsg-&gt;message == WM_KEYDOWN )
    {
        //hier komme ich nie hin, egal welche Taste ich drücke
    }

    return CDialog::PreTranslateMessage(pMsg);
}
</code></pre>
<p>Hat jemand eine Idee?</p>
<p>Danbke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/77262/frage-zu-pretranslatemessage</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 15:00:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/77262.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 Jun 2004 11:55:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu PreTranslateMessage on Sat, 19 Jun 2004 11:55:14 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>um Nachrichten abzufangen wählt man gewöhnlich folgenden Ansatz:</p>
<pre><code class="language-cpp">BOOL CMainDlg::PreTranslateMessage(MSG* pMsg)
{
    //hier kann man eine Mausbewegung abfangen
    if( pMsg-&gt;message == WM_MOUSEMOVE )
    {
        //tue irgendwas...
    }

    //hier kann man abfragen, ob ein Key gedrückt wurde
    if( pMsg-&gt;message == WM_KEYDOWN )
    {
        //tue irgendwas...
    }

    return CDialog::PreTranslateMessage(pMsg);
}
</code></pre>
<p>Soweit so gut. Wenn ich aber einen UnterDialog in meinem HauptDialog wie folgt einbeziehe:</p>
<pre><code class="language-cpp">void CMainDlg::ActivateSubDlg()
{
    m_SubDlg.Create(IDD_SUB_DIALOG, this); //wobei m_SubDlg eine Variable des UnterDialogs ist.
    m_SubDlg.ShowWindow(SW_SHOW);

    //tue irgendwas...

}
</code></pre>
<p>...dann kann ich in meinem UnterDialog mit PreTranslateMessage die Nachricht für's Key-Drücken nicht mehr abfangen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">BOOL SubDlg::PreTranslateMessage(MSG* pMsg)
{
    if( pMsg-&gt;message == WM_KEYDOWN )
    {
        //hier komme ich nie hin, egal welche Taste ich drücke
    }

    return CDialog::PreTranslateMessage(pMsg);
}
</code></pre>
<p>Hat jemand eine Idee?</p>
<p>Danbke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/543676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/543676</guid><dc:creator><![CDATA[q150022]]></dc:creator><pubDate>Sat, 19 Jun 2004 11:55:14 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu PreTranslateMessage on Mon, 21 Jun 2004 08:02:17 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">BOOL CProjekt::PreTranslateMessage(MSG* pMsg) 
{
  CString KeyPressed;
  CString Key =&quot;1234567890+-*//&quot;; // erlaubte zeichen
  int keyAscii;
  CWnd* Editfeld  = GetDlgItem(IDC_EDITn);// Editfelder in der Klasse
  if ( (pMsg-&gt;message == WM_CHAR &amp;&amp; this-&gt;GetFocus() == Editfeld)  ||
       (pMsg-&gt;wParam==VK_RETURN) )// Im Editfeld oder die Entertaste
  {
    keyAscii = pMsg-&gt;wParam;
    KeyPressed.Format(_T(&quot;%c&quot;),keyAscii); 
    if (Key.Find(KeyPressed,0) == -1 &amp;&amp;  keyAscii !=8)
      return 1;
  }
  else
  {
    return CDialog::PreTranslateMessage(pMsg);
  }
  return false;
}
</code></pre>
<p>so geht es bei mir wenn ich bestimmte Zeichen &quot;erlauben&quot; will!<br />
hoffe es hilft<br />
sven</p>
]]></description><link>https://www.c-plusplus.net/forum/post/544621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/544621</guid><dc:creator><![CDATA[Specialguest]]></dc:creator><pubDate>Mon, 21 Jun 2004 08:02:17 GMT</pubDate></item></channel></rss>