<?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[Fenster schliesst sich bei Klick auf Steuerelemente]]></title><description><![CDATA[<p>So, ich habe alle Versuche mit Bibliotheken etc. entnervt aufgegeben und tatsächlich mit WinAPI begonnen, diesmal schon viel weiter gekommen (auch mit MASM32) <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 />
Nun habe ich aber ein Problem; muss sagen, ausser der MessageBox konnte ich vor einer Woche noch nichts; und nun habe ich ein Fenster mit einem Button und 2 Textfeldern, es sollte schlussendlich 2 in den Textfeldern eingegebene Zahlen addiert werden (z.B.), das wollte ich um zu testen ob die Inline Assembler-Funktion auch so funktioniert (bei .NET geht das eben nicht).</p>
<p>So weit bin ich aber noch gar nicht; habe im Moment das Problem dass sich das Fenster sofort schliesst sobald eines der Textfelder angeklickt wird. Was habe ich denn da falsch gemacht??</p>
<pre><code class="language-cpp">
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/182424/fenster-schliesst-sich-bei-klick-auf-steuerelemente</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 07:47:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182424.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 May 2007 20:20:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Thu, 24 May 2007 20:20:43 GMT]]></title><description><![CDATA[<p>So, ich habe alle Versuche mit Bibliotheken etc. entnervt aufgegeben und tatsächlich mit WinAPI begonnen, diesmal schon viel weiter gekommen (auch mit MASM32) <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 />
Nun habe ich aber ein Problem; muss sagen, ausser der MessageBox konnte ich vor einer Woche noch nichts; und nun habe ich ein Fenster mit einem Button und 2 Textfeldern, es sollte schlussendlich 2 in den Textfeldern eingegebene Zahlen addiert werden (z.B.), das wollte ich um zu testen ob die Inline Assembler-Funktion auch so funktioniert (bei .NET geht das eben nicht).</p>
<p>So weit bin ich aber noch gar nicht; habe im Moment das Problem dass sich das Fenster sofort schliesst sobald eines der Textfelder angeklickt wird. Was habe ich denn da falsch gemacht??</p>
<pre><code class="language-cpp">
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1291798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291798</guid><dc:creator><![CDATA[C. M. Obrecht]]></dc:creator><pubDate>Thu, 24 May 2007 20:20:43 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Thu, 24 May 2007 20:22:12 GMT]]></title><description><![CDATA[<p>sorry, wo ist denn mein COde geblieben? Nochmals:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)

{
    HWND     hWnd;
    MSG      msg;
    WNDCLASS wc;

    const char szAppName[] = &quot;Editcontrol Tutorial&quot;;

    wc.style          = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc    = WndProc;
    wc.cbClsExtra     = 0;
    wc.cbWndExtra     = 0;
    wc.hInstance      = hInstance;
    wc.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground  = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
    wc.lpszMenuName   = NULL;
    wc.lpszClassName  = szAppName;

    RegisterClass(&amp;wc);

    hWnd = CreateWindow( szAppName,
                         &quot;Editcontrol Tutorial&quot;,
                         WS_OVERLAPPEDWINDOW,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         NULL,
                         NULL,
                         hInstance,
                         NULL );

    ShowWindow(hWnd, iCmdShow);
    UpdateWindow(hWnd);

    while(GetMessage(&amp;msg, NULL, 0, 0))
    {
        TranslateMessage(&amp;msg);
        DispatchMessage(&amp;msg);
    }

    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{
  static HWND hEdit;
static HWND hEdit2;
static HWND hButton;

switch (message)
   {
     case WM_CREATE:
       {
         char *buffer = NULL;
 char *buffer2 = NULL;

           hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,
                                             &quot;edit&quot;,
                                             buffer,    // &lt;- das ist der Inhalt der Editfelds
                                             WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |
                                                        ES_AUTOVSCROLL,
                                             0, 0, 0, 0,
                                             hWnd,
                                             NULL,
                                             ((LPCREATESTRUCT) lParam) -&gt; hInstance,
                                             NULL);

                      free(buffer);

                      hEdit2 = CreateWindowEx(WS_EX_CLIENTEDGE,
                                            &quot;edit&quot;,
                                            buffer2,    // &lt;- das ist der Inhalt der Editfelds
                                            WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |
                                                       ES_AUTOVSCROLL,
                                            0, 0, 0, 0,
                                            hWnd,
                                            NULL,
                                            ((LPCREATESTRUCT) lParam) -&gt; hInstance,
                                            NULL);

                     free(buffer);

hButton = CreateWindow(  &quot;button&quot;,
                                  &quot;los&quot;,
                                  WS_CHILD | WS_VISIBLE,
                                  0, 0, 0, 0,
                                  hWnd,
                                  NULL,
                                  ((LPCREATESTRUCT) lParam) -&gt; hInstance,
                                  NULL);

                     return 0;

       }
                      case WM_SIZE:
        {

          MoveWindow(hEdit, 0, 0, 90, 20, TRUE);
          MoveWindow(hEdit2, 100, 100, 90, 20, TRUE);
          MoveWindow(hButton, LOWORD(lParam) / 2 - 80, HIWORD(lParam) - 30,
                                                           160, 22, TRUE);

            return 0;
        }

case WM_COMMAND:
      {
         if (lParam == (LPARAM)hButton)
         {
            if (HIWORD(wParam) == BN_CLICKED)

              MessageBox (0, &quot;Hoi&quot;, &quot;Test&quot;, 64);
               return 0;
         }

      }

     case WM_DESTROY:
      {
         PostQuitMessage(0);
         return 0;
      }
   }

return DefWindowProc(hWnd, message, wParam, lParam);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1291800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291800</guid><dc:creator><![CDATA[C. M. Obrecht]]></dc:creator><pubDate>Thu, 24 May 2007 20:22:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Thu, 24 May 2007 20:34:07 GMT]]></title><description><![CDATA[<p>Wenn du das Textfenster anklickst wird WM_COMMAND ausgelöst und da du kein break oder return nach dem WM_COMMAND Code hast wird auch noch der Code für WM_DESTROY ausgeführt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291810</guid><dc:creator><![CDATA[masm]]></dc:creator><pubDate>Thu, 24 May 2007 20:34:07 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Fri, 25 May 2007 06:16:13 GMT]]></title><description><![CDATA[<p>genau das, was mir noch auffaellt ist das du den button gar keine ID gibst sondern alle button klicks abfaengst - fuer diesen fall mag das gehen - aber sobald du mehr buttons dazu packst solltest du schon ID's vergeben</p>
<p>zudem versteh ich nicht warum du beim OnCreate mit MoveWindow arbeitest, du kannst die positionen direkt eingeben ohne das Move, wenn du die button positionen beeinflussen willst wenn das fenster skaliert wird, musst du WM_SIZE abfangen und dort dann die positionen neu setzen</p>
<p>create wird nur beim ersten erstellen des fensters aufgerufen dann nicht mehr - da lohnen sich die MoveWindow befehle nicht - verlaengert nur den code unnoetig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291923</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Fri, 25 May 2007 06:16:13 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Fri, 25 May 2007 08:17:24 GMT]]></title><description><![CDATA[<p>Antworten hast du ja schon bekommen aber eins noch.<br />
Was ist das denn für ein Schwachsinn?</p>
<pre><code>char *buffer = NULL;
 char *buffer2 = NULL;

           hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,
                                             &quot;edit&quot;,
                                             buffer,    // &lt;- das ist der Inhalt der Editfelds
                                             WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |
                                                        ES_AUTOVSCROLL,
                                             0, 0, 0, 0,
                                             hWnd,
                                             NULL,
                                             ((LPCREATESTRUCT) lParam) -&gt; hInstance,
                                             NULL);

                      free(buffer);

                      hEdit2 = CreateWindowEx(WS_EX_CLIENTEDGE,
                                            &quot;edit&quot;,
                                            buffer2,    // &lt;- das ist der Inhalt der Editfelds
                                            WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |
                                                       ES_AUTOVSCROLL,
                                            0, 0, 0, 0,
                                            hWnd,
                                            NULL,
                                            ((LPCREATESTRUCT) lParam) -&gt; hInstance,
                                            NULL);

                     free(buffer);
</code></pre>
<p>Du hast einen Zeiger der auf nix zeigt und willst das als Namen für deine Edits nutzen? Und dann gibst du Speicher Frei den du garnicht angefordert hast? Sollte das nicht sogar crashen?</p>
<p>Entweder so</p>
<pre><code>char *buffer = malloc( sizeof(char) * 20 );
strcpy( buffer, &quot;Name des Edit&quot;);
und dann irgendwann 
free(buffer);
</code></pre>
<p>oder machst einfach</p>
<pre><code>char buffer[20] = &quot;Name des Edit&quot;;
und lässt das free(); ganz weg!
</code></pre>
<p>oder du machst es einfach so wie bei deinem Button und fertig!</p>
<pre><code>hButton = CreateWindow(  &quot;button&quot;,
                                  &quot;los&quot;, &lt;----
                                  WS_CHILD | WS_VISIBLE,
                                  0, 0, 0, 0,
                                  hWnd,
                                  NULL,
                                  ((LPCREATESTRUCT) lParam) -&gt; hInstance,
                                  NULL);
</code></pre>
<p>schirrmie</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291994</guid><dc:creator><![CDATA[schirrmie]]></dc:creator><pubDate>Fri, 25 May 2007 08:17:24 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Fri, 25 May 2007 11:08:27 GMT]]></title><description><![CDATA[<p>Danke! Demfall muss ich</p>
<pre><code class="language-cpp">if (HIWORD(wParam) == BN_CLICKED)

              MessageBox (0, &quot;Hoi&quot;, &quot;Test&quot;, 64);
               return 0;
         }
        return 0;
      }
</code></pre>
<p>eingeben?</p>
<p>Das mit dem MoveWindow war aus einem Beispiel, habe mich schon gefragt wieso die Grösse dort angegeben war; dachte das sei vielleicht am besten. dann kann ich &quot;WS_VSCROLL | ES_MULTILINE &quot; durch die Koordinaten ersetzen?</p>
<p>Ja der Buffer bräuchte es nich so stimmt <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1292133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292133</guid><dc:creator><![CDATA[C. M. Obrecht]]></dc:creator><pubDate>Fri, 25 May 2007 11:08:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Fri, 25 May 2007 12:55:27 GMT]]></title><description><![CDATA[<p>japs, mit dem return gehts auch</p>
<p>und nein du ersetzt natuerlich nicht das style durch dir koordinate - schau mal in die MSDN was CreateWindow wo fuer parameter haben moechte - deine 0, 0, 0, 0 sind die koordinaten {o;</p>
<p>btw. hats ne komsiche einrueck methode #gg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1292227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292227</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Fri, 25 May 2007 12:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Sun, 27 May 2007 10:43:45 GMT]]></title><description><![CDATA[<p>Super jetzt hat es funktioniert <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 />
Muss ich nur noch die Funktion suchen um den String des Edit in eine Ganzzahl umzuwandeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293019</guid><dc:creator><![CDATA[C. M. Obrecht]]></dc:creator><pubDate>Sun, 27 May 2007 10:43:45 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Sun, 27 May 2007 11:14:00 GMT]]></title><description><![CDATA[<p>atoi(LPCSTR string) oder _wtoi(LPCWSTR string)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293033</guid><dc:creator><![CDATA[Dennis123]]></dc:creator><pubDate>Sun, 27 May 2007 11:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Sun, 27 May 2007 11:15:01 GMT]]></title><description><![CDATA[<p>Oder besser _ttoi(LPCTSTR string)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293035</guid><dc:creator><![CDATA[Dennis123]]></dc:creator><pubDate>Sun, 27 May 2007 11:15:01 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Wed, 30 May 2007 20:50:43 GMT]]></title><description><![CDATA[<p>OK, habe etwas gegoogelt nach der Funktion aber schaffte es nicht; das Programm liess sich jeweils ohne Fehler kompilieren ausser wenn ich die Deklaration an den Anfang (vor WinMain) setzte, jedoch stürzte es sofort ab (Fehlermeldung ohne Speicherabbild Meldung unter Win2000).</p>
<p>Probiert habe ich:</p>
<pre><code class="language-cpp">char *buffer = NULL;

           hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,
                                             &quot;edit&quot;,
                                             buffer,    // &lt;- das ist der Inhalt der Editfelds
                                             WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |
                                                        ES_AUTOVSCROLL,
                                             0, 0, 0, 0, //Koordinaten anstelle MoveWindow
                                             hWnd,
                                             NULL,
                                             ((LPCREATESTRUCT) lParam) -&gt; hInstance,
                                             NULL);

                                            a = atoi( buffer );

                      free(buffer);
</code></pre>
<p>natürlich mit der Deklaration int a; an diversen Stellen.</p>
<p>Habe den &quot;Buffer-Zeiger&quot; hier mal gelassen, der wird doch gebraucht da buffer die Variable ist mit dem String aus dem Edit oder sehe ich da etwas falsch? versuche es mal mit einem Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295590</guid><dc:creator><![CDATA[C. M. Obrecht]]></dc:creator><pubDate>Wed, 30 May 2007 20:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster schliesst sich bei Klick auf Steuerelemente on Wed, 30 May 2007 21:16:32 GMT]]></title><description><![CDATA[<p>Du initialisierst 'buffer' doch auch gar nicht (-&gt; <em>malloc</em> bzw. statisch, konstant).<br />
[Falls das woanders geschieht, stimmt evtl. etwa mit dem Gültigkeitsbereich der Variable nicht (-&gt; static)]. CreateWindow(Ex) initalisiert Deine Variable nicht! Und <em>free</em> macht auch keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295602</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 30 May 2007 21:16:32 GMT</pubDate></item></channel></rss>