<?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[winapi addition]]></title><description><![CDATA[<p>wieso funktioniert das nicht so:</p>
<pre><code class="language-cpp">MessageBox(NULL, static_cast&lt;std::string&gt;(IDC_EDIT2) + static_cast&lt;std::string&gt;(IDC_EDIT1), &quot;..&quot;, NULL);
</code></pre>
<pre><code>error C2440: 'static_cast': 'int' kann nicht in 'std::string' konvertiert werden
1&gt;        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
</code></pre>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/197397/winapi-addition</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 05:34:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197397.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Nov 2007 23:44:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to winapi addition on Fri, 09 Nov 2007 23:44:05 GMT]]></title><description><![CDATA[<p>wieso funktioniert das nicht so:</p>
<pre><code class="language-cpp">MessageBox(NULL, static_cast&lt;std::string&gt;(IDC_EDIT2) + static_cast&lt;std::string&gt;(IDC_EDIT1), &quot;..&quot;, NULL);
</code></pre>
<pre><code>error C2440: 'static_cast': 'int' kann nicht in 'std::string' konvertiert werden
1&gt;        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
</code></pre>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400657</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Fri, 09 Nov 2007 23:44:05 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Fri, 09 Nov 2007 23:57:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;ostream&gt;
#include &lt;iostream&gt;

int main()
{
    int foo = IDC_EDIT1 + IDC_EDIT2;
    std::stringstream myStream;    
    myStream &lt;&lt; foo;
    std::string myString(myStream.str());
    MessageBox(NULL, myString.c_str(), &quot;..&quot;, NULL);
}
</code></pre>
<p>So gehts <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/1400661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400661</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Fri, 09 Nov 2007 23:57:26 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 11:20:21 GMT]]></title><description><![CDATA[<p>Was willst du überhaupt ausgeben lassen (IDC_EDIT1 und IDC_EDIT2 sind einfach nur Ids)?<br />
Ich nehme an, du willst die vom Anwender eingegebenen Texte (der beiden Editboxen) anzeigen lassen? Dafür gibt es die WinAPI-Message WM_GETTEXT.<br />
Am besten, du läßt dich ins WinAPI-Forum verschieben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400789</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 10 Nov 2007 11:20:21 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 11:56:24 GMT]]></title><description><![CDATA[<p>Ja, die WinAPI kann ein Krampf sein - mein Vorschlag: Schreib dir eine Funktion, die dir den Text des Editfeldes als std::string zurückgibt, etwa so:</p>
<pre><code class="language-cpp">string GetEditText( int id )
{
    int len = GetWindowTextLength(...) + 1; // +1 wegen der abschließenden '\0'
    char* raw = new char [len];
    GetWindowText( ... );
    string ret = raw;
    delete[] raw;
    return ret;
}
</code></pre>
<p>Dann kannst du die strings auch bequem &quot;addieren&quot;: MessageBox( ..., GetEditText(ID1)+GetEditText(ID2), ... );</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400817</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 10 Nov 2007 11:56:24 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 14:16:10 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Ja, die WinAPI kann ein Krampf sein - mein Vorschlag: Schreib dir eine Funktion, die dir den Text des Editfeldes als std::string zurückgibt, etwa so:</p>
<pre><code class="language-cpp">string GetEditText( int id )
{
    int len = GetWindowTextLength(...) + 1; // +1 wegen der abschließenden '\0'
    char* raw = new char [len];
    GetWindowText( ... );
    string ret = raw;
    delete[] raw;
    return ret;
}
</code></pre>
<p>Dann kannst du die strings auch bequem &quot;addieren&quot;: MessageBox( ..., GetEditText(ID1)+GetEditText(ID2), ... );</p>
</blockquote>
<p>Klappt leider auch nicht @Scorcher, Th und Badestrand.</p>
<p>Ich hab einen DIALOG, dann eine Textbox gemacht.</p>
<p>Dann:</p>
<pre><code class="language-cpp">INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	UNREFERENCED_PARAMETER(lParam);
	switch (message)
	{
	case WM_INITDIALOG:
		return (INT_PTR)TRUE;

	case WM_COMMAND:
		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
		{
			EndDialog(hDlg, LOWORD(wParam));
			return (INT_PTR)TRUE;
		}
		if(LOWORD(wParam) == IDSUM) // IDSUM ist ein COMMANDBUTTON
		{
	        // IDC_* sind Textfelder
						MessageBox(NULL, IDC_EDIT1.c_str(), &quot;..&quot;, NULL); // Hier wollte ich nur mal das mit nur einer Textbox ausprobieren, trodzdem nichts.
		}
		break;
	}
	return (INT_PTR)FALSE;
}
</code></pre>
<p>Folge:</p>
<blockquote>
<p>error C2228: Links von &quot;.c_str&quot; muss sich eine Klasse/Struktur/Union befinden.</p>
</blockquote>
<p>mit freundlichen grüßen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400906</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Sat, 10 Nov 2007 14:16:10 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 14:29:38 GMT]]></title><description><![CDATA[<p>Das was du geschrieben hast, kann nicht funktionieren. Ausserdem war deine Fragestellung auch fast nicht so zu verstehen. Du solltest das nächste mal mehr Infos rüberkommen lassen.<br />
Du möchtest aus dem Textfeld mit der ID IDC_EDIT1 einen Text haben. Gut. Nur ist IDC_EDIT1 nur eine Zahl. Eine sogeannte ID. Das ist keine Klasse. Du musst eben wie Badestrand zeigt, GetWindowText() verwenden, um den Text aus IDC_EDIT1 zu erhalten.</p>
<pre><code class="language-cpp">string GetEditText( HWND hWnd )
{
    int len = GetWindowTextLength(hWnd) + 1; // +1 wegen der abschließenden '\0'
    char* raw = new char [len];
    GetWindowText(hWnd, raw, len);
    string ret = raw;
    delete[] raw;
    return ret;
}

INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        if(LOWORD(wParam) == IDSUM) // IDSUM ist ein COMMANDBUTTON
        {
            // IDC_* sind Textfelder
                        MessageBox(NULL, GetEditText(hDlg).c_str(), &quot;..&quot;, NULL); // Hier wollte ich nur mal das mit nur einer Textbox ausprobieren, trodzdem nichts.
        }
        break;
    }
    return (INT_PTR)FALSE;
}
</code></pre>
<p>So sollte das gehen, habs allerdings nicht getestet.<br />
rya.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400915</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 10 Nov 2007 14:29:38 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 14:47:39 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">'GetWindowTextW': Konvertierung des Parameters 2 von 'char *' in 'LPWSTR' nicht möglich
1&gt;        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder
</code></pre>
<p>kommt dabei bei<br />
<strong>GetWindowText(hWnd, raw, len);</strong></p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400929</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Sat, 10 Nov 2007 14:47:39 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 14:57:45 GMT]]></title><description><![CDATA[<p>*seufz*<br />
Dann stell dein Programm auf MultiByte um, oder nimm statt char wchar_t oder gleich LPCWSTR, wobei LPCWSTR == wchar_t ist.<br />
Du kompilierst im UniCode Modus, was wir hier allerdings nicht riechen können. Und statt std::string auch gleich std::wstring.<br />
rya.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400945</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 10 Nov 2007 14:57:45 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 15:12:40 GMT]]></title><description><![CDATA[<p>Scorcher24 schrieb:</p>
<blockquote>
<p>*seufz*<br />
Dann stell dein Programm auf MultiByte um, oder nimm statt char wchar_t oder gleich LPCWSTR, wobei LPCWSTR == wchar_t ist.<br />
Du kompilierst im UniCode Modus, was wir hier allerdings nicht riechen können. Und statt std::string auch gleich std::wstring.<br />
rya.</p>
</blockquote>
<p>aso danke^^<br />
hab geglaubt,dass das die ganze Zeit auf Multibyte war, danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>nur noch eine ganz kurze und einfache Frage:</p>
<p>Wie kann ich aus der Textbox den Inhalt, also das was ich dort eingegeben hab in einer MessageBox ausgeben, wenn ich auf einen Commandbutton geklickt hab?</p>
<p>Das mit der Funktion hat irgendwie nicht geklappt,</p>
<pre><code class="language-cpp">if(LOWORD(wParam) == IDSUM)
		{
			MessageBox(NULL, &quot;Summe lautet: &quot;, &quot;..&quot;, NULL); 
		}
</code></pre>
<p>Da sollte halt dann die entsprechende Summe rauskommen, nur klappt das irgendwie nicht.</p>
<p>Sorry,dass ich solche einfachen Fragen stelle.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400952</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Sat, 10 Nov 2007 15:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 15:53:45 GMT]]></title><description><![CDATA[<p>hi</p>
<p>sry für doppelposting.</p>
<p>kann mir aber bitte jemand helfen?<br />
ich habe bereits gesagt,dass die Funktion zwar ohne Fehler zu kompilieren war, aber sobald ich den Sum Button angeklickt hatte, passierte trodzdem nichts.</p>
<p>aus diesem beispiel</p>
<pre><code class="language-cpp">if(LOWORD(wParam) == IDSUM)
        {
            MessageBox(NULL, &quot;Summe lautet: &quot;, &quot;..&quot;, NULL); 
        }
</code></pre>
<p>würde ich noch gerne sowas wie</p>
<pre><code class="language-cpp">if(LOWORD(wParam) == IDSUM)
        {
            MessageBox(NULL, &quot;Summe lautet: &quot; + IDC_EDIT1, &quot;..&quot;, NULL); 
        }
</code></pre>
<p>ausgeben, also</p>
<p>wenn in der Txtbox &quot;8&quot; steht und man auf den Button klickt ..</p>
<pre><code>Summe lautet: 8
</code></pre>
<p>Sollte auch mit Strings,etc. funktionieren <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>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400978</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Sat, 10 Nov 2007 15:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 16:07:41 GMT]]></title><description><![CDATA[<p>Das Problem ist nicht, dass du einfache Fragen stellst.. Das Problem ist, dass du die Grundlagen nicht beherrschst (lies dir mal ein Tutorial durch, dass du wenigstens den Unterschied zwischen einem String und einem Integer kennst) und dass du unsere Antworten anscheinend nicht beachtest.. Hier wird dir (hoffentlich) keiner den kompletten Quellcode dafür hinlegen, so dass du nur noch rüberzukopieren brauchst. Wir haben schon alles geschrieben, was du brauchst, mit zwei Minuten nachdenken kannst du das locker und bequem in dein Programm einbauen. Aber nein, lieber nochmal mit <code>&quot;Summe lautet: &quot; + IDC_EDIT1</code> ankommen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1400997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400997</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 10 Nov 2007 16:07:41 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 17:07:31 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Das Problem ist nicht, dass du einfache Fragen stellst.. Das Problem ist, dass du die Grundlagen nicht beherrschst (lies dir mal ein Tutorial durch, dass du wenigstens den Unterschied zwischen einem String und einem Integer kennst) und dass du unsere Antworten anscheinend nicht beachtest.. Hier wird dir (hoffentlich) keiner den kompletten Quellcode dafür hinlegen, so dass du nur noch rüberzukopieren brauchst. Wir haben schon alles geschrieben, was du brauchst, mit zwei Minuten nachdenken kannst du das locker und bequem in dein Programm einbauen. Aber nein, lieber nochmal mit <code>&quot;Summe lautet: &quot; + IDC_EDIT1</code> ankommen <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>
</blockquote>
<p>hi badestrand!</p>
<p>also ich wollte zuerst nur einen Integer als Ergebnis in der Msgbox bekommen, sollte doch gehen.</p>
<p>Die Funktion</p>
<pre><code class="language-cpp">std::string GetEditText( HWND hWnd ) 
{ 
    int len = GetWindowTextLength(hWnd) + 1; // +1 wegen der abschließenden '\0' 
    char* raw = new char [len]; 
    GetWindowText(hWnd, raw, len); 
	std::string ret = raw; 
    delete[] raw; 
    return ret; 
}
</code></pre>
<p>erlaubt nur,dass man int in string umwandeln kann.</p>
<p>Und die MessageBox:</p>
<pre><code class="language-cpp">if(LOWORD(wParam) == IDSUM)
		{
			MessageBox(NULL,  GetEditText(hDlg).c_str(), &quot;..&quot;, NULL); 
		}
</code></pre>
<p>Gibt nur folgendes aus:</p>
<p>&quot;Dialog&quot;</p>
<p>mehr nicht.</p>
<p>Deswegen möchte ich euch nur darum bitten, mir zu sagen, wie ich da ein <strong>IDC_EDIT1</strong> anhängen kann, damit das auch so funktioniert, wie ich es möchte?</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401042</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Sat, 10 Nov 2007 17:07:31 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 17:57:34 GMT]]></title><description><![CDATA[<p>ATt schrieb:</p>
<blockquote>
<p>Deswegen möchte ich euch nur darum bitten, mir zu sagen, wie ich da ein <strong>IDC_EDIT1</strong> anhängen kann, damit das auch so funktioniert, wie ich es möchte?</p>
</blockquote>
<p>Das ist mit der Formulierung aber Unsinn! Du willst den Text anhängen, der im Editfeld steht, dass in deinem Fenster die ID IDC_EDIT1 hat.</p>
<p>Ich hab wirklich das Gefühl, dass du die Grundlagen nicht verstehst. Ist ja nix schlimmes, aber dir bringt es <em>gar nix</em>, wenn wir dir einfach fertigen Code hinsetzen, den du bei dir einfügst.<br />
Ich versuche dir mal die Grundlagen zu erklären:</p>
<p>Grundlage: Der Unterschied zwischen einem String und einem Integer<br />
Ein String ist eine Zeichenkette, die folglicherweise einen oder mehrere Zeichen enthält. Das kann sowas sein wie &quot;Peter&quot; oder &quot;Dies ist ein Satz&quot;. Wenn du sowas in Hochkommas hast, ist das aber kein String-Objekt, sondern ein Zeiger auf den ersten Buchstaben der Zeichenkette. String-<em>Objekte</em> gibts in C++ nur mit der Klasse string aus dem Namensraum std.<br />
Wenn du <code>&quot;Peter&quot;+1</code> schreibst, was passiert dann? Dann passiert das, was man <strong>Zeigerarithmetik</strong> nennt. Im Arbeitsspeicher reiht sich Byte an Byte. Jedes Zeichen wie das 'P' von &quot;Peter&quot; wird dabei von einem Byte repräsentiert, ein Byte mit dem <strong>Wert</strong> (nicht dem Buchstaben) Null schließt die Zeichenkette ab.<br />
Nehmen wir an du hast folgendes Programm:</p>
<pre><code class="language-cpp">int main(...)
{
    const char* meine_zeichenkette = &quot;Peter&quot;;
    return 0;
}
</code></pre>
<p>Wenn dein Programm ausgeführt wird (die Exe-Datei), dann wird das Programm als Prozess in den Arbeitsspeicher geladen. Jeder Prozess hat dabei auch einen Datenbereich, in dem konstante Sachen drin stehen, wie z.B. auch die Zeichenkette &quot;Peter&quot;.<br />
Das hier ist dann z.B. ein Ausschnitt aus dem Arbeitsspeicher, Byte neben Byte, welches je eine der Zahlen 0 bis 255 beinhalten kann; 'xxx' steht dabei für irgendeine zufällige Zahl:<br />
xxx xxx xxx 80 101 116 101 114 0 xxx xxx</p>
<p>Laut der <a href="http://de.wikipedia.org/wiki/ASCII-Tabelle" rel="nofollow">ASCII-Tabelle</a> repräsentiert ein Byte mit dem Wert 80 z.B. den Buchstaben 'P'. So. Und jedes Byte kann durch eine Adresse angesprochen werden, so wie jedes Haus durch seine Anschrift. Relativ von unserem Arbeitsspeicherausschnitt hat unsere Zeichenkette &quot;Peter&quot; die Adresse 3 (Zählung beginnt mit 0).</p>
<p>Modifizieren wir das Programm von oben ein wenig:</p>
<pre><code class="language-cpp">int main(...)
{
    const char* meine_zeichenkette = &quot;Peter&quot;;
    const char* var2 = meine_zeichenkette + 1;
    printf( var2 );
    return 0;
}
</code></pre>
<p>Was wird ausgegeben? &quot;eter&quot;! Und warum? Weil die Variable var2 die Adresse von &quot;Peter&quot; plus ein Byte weiter enthält. Die Adresse adressiert also das Zeichen hinter dem 'P', also das 'e'.</p>
<p>Und wenn du schreibst <code>var2 = &quot;Peter&quot; + &quot;Annelise&quot;</code> , was passiert dann? Jedenfalls nicht das, was du dir wünschst! Es sind einfach zwei Zeiger und dein Programm weiß nicht, was es mit den zwei Zeigern machen soll; sagen wir, &quot;Peter&quot; hat die Adresse 981273 und &quot;Annelise&quot; hat die Adresse 192387, was erwartest du dir dann von der Addition? Kommt jedenfalls nix sinnvolles dabei raus, der Zeiger zeigt sonstwohin..</p>
<p>Dein IDC_EDIT ist ein Integer, das heißt eine <em>Zahl</em>. Kapito, eine Zahl! Das heißt, wenn du <code>&quot;Peter&quot; + IDC_EDIT1</code> schreibst und IDC_EDIT1 den Wert 4 hat, kriegst du einen Zeiger dabei raus, der nur noch auf das 'r' von &quot;Peter&quot; zeigt.</p>
<p>Um das Ganze handlicher zu machen und Sachen wie <code>&quot;Peter&quot;+&quot;Annelise&quot;</code> sinnvoll abwickeln zu können, gibts eben die string-Klasse. Klassen haben den Vorteil, dass man bestimmen kann, was bei der Operation mit &quot;+&quot; geschehen soll. Bei der string-Klasse werden die Zeichenketten aneinandergehangen, es entsteht also &quot;PeterAnnelise&quot;.</p>
<p>So, nun zur WinAPI. Darin werden Fenster wie folgt verwaltet:<br />
Jedes Fenster (Editfelder oder Buttons sind auch Fenster) hat ein Zugriffshandle, das ihm zur Laufzeit von Windows zugewiesen wird. Weil du aber in deinem Code jedes Fenster auch ansprechen können musst, vergibst du an deine Editfelder, Buttons usw eindeutige IDs, also auch Zahlen. Mit einem Aufruf der WinAPI-Funktion &quot;GetDlgItem&quot; bekommst du das Zugriffshandle für das Fenster zu der entsprechenden ID. Das Handle brauchst du, um z.B. den Text aus dem Editfeld zu bekommen.</p>
<p>Also wandelt die &quot;GetEditText&quot;-Funktion ganz bestimmt <em>nicht</em> einfach eine Zahl in einen string um, sondern fragt von Windows passend zur übergebenen ID das Handle des Editfelds ab und holt sich mit dem Aufruf &quot;GetWindowText&quot; den Text von dem Editfeld.</p>
<p>So, nachdem du den Text gelesen und verstanden hast, wirst du das wohl alleine lösen können <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="😉"
    /> Wenn nicht, dann stell haargenaue Fragen wo es hapert und kein generelles &quot;Will Apfel in Korb werfen, klappt nicht&quot;, sondern eher sowas wie &quot;Ich weiß nicht wo der Korb steht wo der Apfel rein soll, kann mir jemand helfen?&quot;. Ok? Hab echt Mühe und Zeit geopfert für den Text, jetzt zeig du auch mal ein wenig Eigeninitiative!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401062</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 10 Nov 2007 17:57:34 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 18:22:30 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>, manchmal kann man schon verzweifeln an den Fragestellern (und deren Fragen), aber ich glaube trotzdem nicht, daß der Threadersteller auch nur ein Wort verstanden hat.</p>
<p>@ATt: Lass es erst einmal mit WinAPI, GUI und sonstigem Gedöns. Lern erstmal die Grundlagen mit Hilfe einer einfachen Konsolenanwendung... In ein paar Monaten kannst du dann nochmal Fragen zur WinAPI stellen (aber hoffentlich nicht dieselben) -)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401078</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 10 Nov 2007 18:22:30 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 18:55:05 GMT]]></title><description><![CDATA[<p>hallo badestrand!</p>
<p>Der Funktionsaufruf</p>
<pre><code class="language-cpp">GetEditText(hDlg).c_str()
</code></pre>
<p>tut mich nur ein wenig verwirren, da es immer nur den Titel des HWND's, also Fensters ausgibt.</p>
<p><a href="http://img85.imageshack.us/img85/3788/prbldd3.jpg" rel="nofollow">http://img85.imageshack.us/img85/3788/prbldd3.jpg</a></p>
<p>Ich danke dir auf jeden Fall für deine Mühe, also für deinen ganzen Text <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="😉"
    /><br />
Ich hab alles andere außer das</p>
<blockquote>
<p>Also wandelt die &quot;GetEditText&quot;-Funktion ganz bestimmt nicht einfach eine Zahl in einen string um, <strong>sondern fragt von Windows passend zur übergebenen ID das Handle des Editfelds ab und holt sich mit dem Aufruf &quot;GetWindowText&quot; den Text von dem Editfeld.</strong></p>
</blockquote>
<p>verstanden <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>
<p>Weil da<br />
GetWindowText<strong>Length</strong>(hWnd) + 1 steht <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=":/"
      alt="😕"
    /></p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401090</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Sat, 10 Nov 2007 18:55:05 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 22:05:38 GMT]]></title><description><![CDATA[<p>ich bin mir nicht sicher, was ich nun machen soll.<br />
Ich verstehe zwar wo die Unterschiede zwischen String und Integer liegen, aber weiß leider nicht, wie ich das in mein Programm hineinintepretieren soll.</p>
<p>Ich bitte dich/euch um Hilfe.</p>
<p>mfg Adv. Tech. TOa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401159</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Sat, 10 Nov 2007 22:05:38 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 22:18:45 GMT]]></title><description><![CDATA[<p>Vielleicht solltest du mal dein Ziel überlegen <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>
<p>Also, dein Ziel ist es ja gerade, den Text aus dem Editfeld auszulesen und in einer MessageBox (mit noch etwas Text davor) auszugeben.<br />
Spaßeshalber gehen wir einfach mal back-to-front (oder so :D) vor. Aaaaaaaaaaalso, wir fangen hinten an, mit der MessageBox.</p>
<pre><code class="language-cpp">string msg, edittext;
// Text aus dem Editfeld auslesen in edittext
// msg soll aus &quot;Irgendwas&quot; plus dem edittext bestehen
MessageBox( hDlg, msg.c_str(), &quot;&quot;, MB_OK );
</code></pre>
<p>-&gt;</p>
<pre><code class="language-cpp">string msg, edittext;
// Text aus dem Editfeld auslesen in edittext

// msg soll aus &quot;Irgendwas&quot; plus dem edittext bestehen
msg = string(&quot;Irgendwas&quot;) + edittext;
MessageBox( hDlg, msg.c_str(), &quot;&quot;, MB_OK );
</code></pre>
<p>-&gt;</p>
<pre><code class="language-cpp">string msg, edittext;
// Text aus dem Editfeld auslesen in edittext
edittext = LoadMyEditFieldContent( hDlg, IDC_EDIT1 );
// msg soll aus &quot;Irgendwas&quot; plus dem edittext bestehen
msg = string(&quot;Irgendwas&quot;) + edittext;
MessageBox( hDlg, msg.c_str(), &quot;&quot;, MB_OK );
</code></pre>
<p>Die &quot;LoadMyEditFieldContent&quot;-Funktion kannst du dir selber schreiben. Auf Grundlage der Funktion &quot;GetEditText( HWND hWnd )&quot; von vorhin und der Funktion &quot;GetDlgItem&quot;, die du bei der MSDN nachschlagen kannst <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>MSDN: <a href="http://msdn2.microsoft.com/en-us/library/default.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/default.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401162</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 10 Nov 2007 22:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 23:07:29 GMT]]></title><description><![CDATA[<p>Oh... danke Badestrand, dass du mir noch immer helfen möchtest <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>
<p>Zum Thema:</p>
<pre><code class="language-cpp">std::string GetEditText( HWND hWnd ) 
{ 
	GetDlgItem(hWnd, IDC_EDIT1);
    int len = GetWindowTextLength(hWnd) + 1; // +1 wegen der abschließenden '\0' 
    char* raw = new char [len]; 
    GetWindowText(hWnd, raw, len); 
	std::string ret = raw; 
    delete[] raw; 
    return ret; 
}
</code></pre>
<pre><code class="language-cpp">if(LOWORD(wParam) == IDSUM)
		{
			std::string msg, textIn;
			textIn = GetEditText(hDlg);
			msg = std::string(&quot;TEST&quot;) + textIn;
			MessageBox(hDlg,  msg.c_str(), &quot;..&quot;, NULL); 

		}
</code></pre>
<p>so, nun gibt es aber das Problem, dass da nun &quot;TEST&quot; und der Titel vom Fenster angezeigt wird.</p>
<p>Irgendetwas hab ich noch falsch gemacht und ich bin mir nicht sicher,dass es das ist,weil ich ja eine Art verlinkung zum eingegebenen Text machen soll und nicht zum Fenster(vllt deswegen die ausgabe vom titel)</p>
<p>oder die funktion stimmt nicht, evtl. die parameteranzahl bei der def. der funktion <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>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401172</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Sat, 10 Nov 2007 23:07:29 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 23:15:58 GMT]]></title><description><![CDATA[<p>Ich geb dir nen Tipp: Die Funktion &quot;GetEditText&quot; bekommt ja ein Fensterhandle und gibt dir den Text von eben diesem Fenster zurück. Du übergibst ihr ja das Fensterhandle zu deinem Hauptfenster (hDlg), also bekommst du den Text vom Hauptfenster. Da du ja den Text vom Editfeld willst, musst du der Funktion das Fensterhandle vom Editfeld übergeben. Und da kommt nunmal die Funktion <a href="http://msdn2.microsoft.com/en-us/library/ms645481.aspx" rel="nofollow">GetDlgItem</a> ins Spiel <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>ATt schrieb:</p>
<blockquote>
<p>Oh... danke Badestrand, dass du mir noch immer helfen möchtest <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>
</blockquote>
<p>Du zeigst ja auch, dass du es wenigstens versuchst.. <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/1401174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401174</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 10 Nov 2007 23:15:58 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sat, 10 Nov 2007 23:26:46 GMT]]></title><description><![CDATA[<p>hi</p>
<p>kannst du mir bitte die funktion aufschreiben, ich will mal noch ein bisschn versuchen, bevor ich schlafen gehe und morgen werd ich mir die Lösung anschauen?;)</p>
<p>ich bin jetzt zwar sehr müde, versuch es trodzdem noch ein bisschen.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401178</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Sat, 10 Nov 2007 23:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sun, 11 Nov 2007 01:01:19 GMT]]></title><description><![CDATA[<p>Sorry, hab deinen Beitrag nicht mehr gesehen <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=":/"
      alt="😕"
    /></p>
<p>Und welche Funktion meinst du? Die GetDlgItem? Die steht doch in der MSDN, hier die Signatur:</p>
<pre><code>// The GetDlgItem function retrieves a handle to a control in the specified dialog box.
HWND GetDlgItem( HWND hDlg, int nIDDlgItem );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1401188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401188</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 11 Nov 2007 01:01:19 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sun, 11 Nov 2007 08:13:49 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::string GetEditText( HWND hWnd ) 
{ 
    int len = GetWindowTextLength(hWnd) + 1; // +1 wegen der abschließenden '\0' 
    char* raw = new char [len]; 
    GetWindowText(hWnd, raw, len); 
    std::string ret = raw; 
    delete[] raw; 
    return ret; 
}

// ...
if(...)
{
    std::string text = GetEditText(GetDlgItem(hDlg, IDC_EDIT1));
    MessageBox(NULL, text.c_str(), &quot;..&quot;, NULL); 
}
</code></pre>
<p>Hm?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401217</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 11 Nov 2007 08:13:49 GMT</pubDate></item><item><title><![CDATA[Reply to winapi addition on Sun, 11 Nov 2007 10:09:38 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Sorry, hab deinen Beitrag nicht mehr gesehen <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=":/"
      alt="😕"
    /></p>
<p>Und welche Funktion meinst du? Die GetDlgItem? Die steht doch in der MSDN, hier die Signatur:</p>
<pre><code>// The GetDlgItem function retrieves a handle to a control in the specified dialog box.
HWND GetDlgItem( HWND hDlg, int nIDDlgItem );
</code></pre>
</blockquote>
<p>Ja, ich hab es leider wieder falsch gemacht und dann bei hustbaer abgeschaut und da bin ich draufgekommen,dass eine funktion in einer anderen aufgerufen wird .. sorry,dass ich daran nicht gedacht habe.</p>
<p>DANKE an <strong>Badestrand</strong> und <strong>hustbaer</strong> für ihre nette Hilfe!</p>
<p>Nun weiß ich wie man Strings,etc.. ausgibt.</p>
<p>Danke!</p>
<p>mfg<br />
Adv. Tech. TOa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401239</guid><dc:creator><![CDATA[ATt]]></dc:creator><pubDate>Sun, 11 Nov 2007 10:09:38 GMT</pubDate></item></channel></rss>