<?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[Seltsames Verhalten eines Edit Controls]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe ein äußerst seltsames Problem mit meinem Edit Control. Jedes mal wenn man ein Zeichen eingibt, wird das Zeichen zwei mal rein geschrieben! (Betrifft nur Edit Controls des eigenen Programmes). Habe eigentlich nichts großartiges geändert und die callback Routine ist bis auf ein WM_PAINT nun leer. Hängt es irgendwie mit UNICODE zusammen? Oder mit dem Dialog in dem es angezeigt wird? Also wenn jemand eine Idee hat, gerne melden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191580/seltsames-verhalten-eines-edit-controls</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 09:48:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191580.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Sep 2007 14:44:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Seltsames Verhalten eines Edit Controls on Tue, 04 Sep 2007 14:44:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe ein äußerst seltsames Problem mit meinem Edit Control. Jedes mal wenn man ein Zeichen eingibt, wird das Zeichen zwei mal rein geschrieben! (Betrifft nur Edit Controls des eigenen Programmes). Habe eigentlich nichts großartiges geändert und die callback Routine ist bis auf ein WM_PAINT nun leer. Hängt es irgendwie mit UNICODE zusammen? Oder mit dem Dialog in dem es angezeigt wird? Also wenn jemand eine Idee hat, gerne melden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358860</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Tue, 04 Sep 2007 14:44:13 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten eines Edit Controls on Tue, 04 Sep 2007 14:56:51 GMT]]></title><description><![CDATA[<p>ka du machst was falsch, zeig den code</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358870</guid><dc:creator><![CDATA[teppichmensch]]></dc:creator><pubDate>Tue, 04 Sep 2007 14:56:51 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten eines Edit Controls on Tue, 04 Sep 2007 21:59:57 GMT]]></title><description><![CDATA[<p>Okay habe das Problem jetzt gefunden, allerdings noch keine richtige Lösung gefunden. Folgender Code führt zu mehr oder weniger undefiniertem Verhalten:</p>
<pre><code class="language-cpp">while (GetMessage (&amp;msg, NULL, 0, 0))
{
    size_t size = vec_Dialog.size();

    for (size_t si = 0; si &lt; size; si++)
    {
        if (!IsDialogMessage (vec_Dialog.at(si).hWnd, &amp;msg))
            if (si == size -1)
            {
                TranslateMessage (&amp;msg);
                DispatchMessage (&amp;msg);
            }
        }
    }
}
</code></pre>
<p>Jetzt denkt ihr euch bestimmt, was macht der denn für ein Scheiß? Es sieht folgendermaßen aus. Ich erstelle in einem Thread mehrere Dialoge über CreateDialogParam und speichere die HWNDs davon in einem vector ab. Dann werden die Messages abgearbeitet. Nun möchte ich, dass man mit Tab (WS_TABSTOP natürlich definiert) durch die (alle) Dialoge tabben kann. Daher reicht nicht mehr ein einfaches TranslanteMessage sondern ich muss IsDialogMessage verwenden. Doch dieses will ein HWND eines Dialoges auf das es prüfen soll. Deswegen das mit der Schleife. Dadurch werden wohl allerdings, manche Messages mehrfach bearbeitet und ich habe mehrere Zeichen auf ein mal in z.B. meinem Edit Control.<br />
Hat da jemand vielleicht eine Idee wie ich dies alles korrekt implementieren kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359075</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Tue, 04 Sep 2007 21:59:57 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten eines Edit Controls on Wed, 05 Sep 2007 00:06:03 GMT]]></title><description><![CDATA[<p>Ich glaub ich würd's so machen:</p>
<pre><code class="language-cpp">// Die Abfrage in &quot;while&quot; ist übrigens mehr oder weniger gefährlich, weil GetMessage
//   bei einem Fehler auch -1 zurückgeben kann, was dann aber auch als &quot;true&quot; ausge-
//   wertet wird
while ( GetMessage (&amp;msg, NULL, 0, 0) )
{
    bool processed = false; // Gibt an, ob die Nachricht schon verarbeitet wurde
    size_t size = vec_Dialog.size();

    for (size_t si = 0; si &lt; size; si++)
        if ( vec_Dialog.at(si).hWnd==msg.hwnd &amp;&amp; IsDialogMessage(vec_Dialog.at(si).hWnd, &amp;msg))
        {
            processed = true;
            break; // Springt aus der for-Schleife raus
        }

    if ( ! processed )
    {
        TranslateMessage (&amp;msg);
        DispatchMessage (&amp;msg);
    }
}
</code></pre>
<p>Kann aber auch falsch sein, ist ja schon spät <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/1359102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359102</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 05 Sep 2007 00:06:03 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten eines Edit Controls on Wed, 05 Sep 2007 09:30:58 GMT]]></title><description><![CDATA[<p>Leider geht es so auch nicht, man kann nicht rumtabben.<br />
Es kann doch nicht sein, dass man das nicht machen kann!?<br />
Im Prinzip benötige ich IsDialogMessage ja nur um tabben zu können, kann man das auch von Hand implementieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359254</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Wed, 05 Sep 2007 09:30:58 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten eines Edit Controls on Wed, 05 Sep 2007 11:00:39 GMT]]></title><description><![CDATA[<p>Aber wenn die Nachricht per IsDialogMessage bearbeitet worden ist, darfst Du sie nicht weitersenden.</p>
<p>In meinen Augen müsste es schon so gehen wie Badestrand geschrieben hat.<br />
Aber man muss jede Nachricht per IsDialogMessage anbieten auch wenn diese für andere Fenster sind.</p>
<pre><code class="language-cpp">while ( GetMessage (&amp;msg, NULL, 0, 0) )
{
    bool processed = false;
    size_t size = vec_Dialog.size();

    for (size_t si = 0; si &lt; size; si++)
        if ( IsDialogMessage(vec_Dialog.at(si).hWnd, &amp;msg))
        {
            processed = true;
            break; // Springt aus der for-Schleife raus
        }

    if ( ! processed )
    {
        TranslateMessage (&amp;msg);
        DispatchMessage (&amp;msg);
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1359261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359261</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 05 Sep 2007 11:00:39 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten eines Edit Controls on Wed, 05 Sep 2007 09:49:37 GMT]]></title><description><![CDATA[<p>Oha so funktioniert es jetzt anscheinend!<br />
Super, danke an euch beide!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359267</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Wed, 05 Sep 2007 09:49:37 GMT</pubDate></item></channel></rss>