<?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[Nachrichtenaustausch zwischen Fenstern]]></title><description><![CDATA[<p>Hallo, Forum,<br />
ich übe gerade die Kommunikation zwischen Fenstern mit Nachrichten. Dafür habe ich ein Parent- und ein Child-Window, die miteinander selbstdefinierte Nachrichten austauschen. Folgendermaßen sieht das aus:</p>
<pre><code class="language-cpp">const UINT WM_GETDATA = WM_APP + 1;
const UINT WM_SENDDATA = WM_APP + 2;
LRESULT CALLBACK ChildProc (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

const char szAppName[] = &quot;Tastaturabfrage&quot;;
const char szChildName[] = &quot;ChildWindow&quot;;

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   HWND hChild;
   switch (message)
   {
   	case WM_CREATE:
      {
       	hChild = CreateWindow (szChildName,
         					NULL,
                        WS_CHILD|WS_VISIBLE|WS_DLGFRAME,
                        0,
                        0,
                        300,
                        130,
                        hWnd,
                        NULL,
                        ((LPCREATESTRUCT)lParam)-&gt;hInstance,
                        NULL);
         return 0;
      }
      //////////////////////////////////////////////////////////////////////////
      case WM_GETDATA:
      {
      	bool Pm;
      	MessageBox(hWnd, &quot;WM_GETDATA ist angekommen&quot;, &quot;Fensternachricht&quot;, MB_OK);
      	Pm = PostMessage(hChild, WM_SENDDATA, 0, 0);

         if (Pm == FALSE)
         {
         	MessageBox(hWnd, &quot;WM_SENDDATA wurde nicht gesendet&quot;, &quot;Fensternachricht&quot;, MB_OK);
         }
         return 0;
      }

      //////////////////////////////////////////////////////////////////////////

LRESULT CALLBACK ChildProc (HWND hChild, UINT message, WPARAM wParam, LPARAM lParam)
{

	switch (message)
   {
   	case WM_CREATE:
   	{

       	PostMessage(GetParent(hChild), WM_GETDATA, 0, 0);
      	return 0;
      }

      case WM_SENDDATA:
      {  ///////////////////////////////////////////////////////////////////////
         MessageBox(hChild, &quot;WM_SENDDATA angekommen&quot;, &quot;Fensternachricht&quot;, MB_OK);
      	///////////////////////////////////////////////////////////////////////
         return 0;
      }
</code></pre>
<p>Die Fenster werden auch brav angezeigt. Die MessageBoxen sagen mir, daß WM_GETDATA gesendet wird und richtig ankommt. Aber WM_SENDDATA wird nicht gesendet.<br />
Warum nicht?<br />
Ich habe es auch mit SendMessage versucht, aber mit dem gleichen Ergebnis.</p>
<p>Woran liegt es?<br />
Danke für Eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/163341/nachrichtenaustausch-zwischen-fenstern</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 14:44:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/163341.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Oct 2006 16:54:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Sat, 28 Oct 2006 16:58:25 GMT]]></title><description><![CDATA[<p>Hallo, Forum,<br />
ich übe gerade die Kommunikation zwischen Fenstern mit Nachrichten. Dafür habe ich ein Parent- und ein Child-Window, die miteinander selbstdefinierte Nachrichten austauschen. Folgendermaßen sieht das aus:</p>
<pre><code class="language-cpp">const UINT WM_GETDATA = WM_APP + 1;
const UINT WM_SENDDATA = WM_APP + 2;
LRESULT CALLBACK ChildProc (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

const char szAppName[] = &quot;Tastaturabfrage&quot;;
const char szChildName[] = &quot;ChildWindow&quot;;

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   HWND hChild;
   switch (message)
   {
   	case WM_CREATE:
      {
       	hChild = CreateWindow (szChildName,
         					NULL,
                        WS_CHILD|WS_VISIBLE|WS_DLGFRAME,
                        0,
                        0,
                        300,
                        130,
                        hWnd,
                        NULL,
                        ((LPCREATESTRUCT)lParam)-&gt;hInstance,
                        NULL);
         return 0;
      }
      //////////////////////////////////////////////////////////////////////////
      case WM_GETDATA:
      {
      	bool Pm;
      	MessageBox(hWnd, &quot;WM_GETDATA ist angekommen&quot;, &quot;Fensternachricht&quot;, MB_OK);
      	Pm = PostMessage(hChild, WM_SENDDATA, 0, 0);

         if (Pm == FALSE)
         {
         	MessageBox(hWnd, &quot;WM_SENDDATA wurde nicht gesendet&quot;, &quot;Fensternachricht&quot;, MB_OK);
         }
         return 0;
      }

      //////////////////////////////////////////////////////////////////////////

LRESULT CALLBACK ChildProc (HWND hChild, UINT message, WPARAM wParam, LPARAM lParam)
{

	switch (message)
   {
   	case WM_CREATE:
   	{

       	PostMessage(GetParent(hChild), WM_GETDATA, 0, 0);
      	return 0;
      }

      case WM_SENDDATA:
      {  ///////////////////////////////////////////////////////////////////////
         MessageBox(hChild, &quot;WM_SENDDATA angekommen&quot;, &quot;Fensternachricht&quot;, MB_OK);
      	///////////////////////////////////////////////////////////////////////
         return 0;
      }
</code></pre>
<p>Die Fenster werden auch brav angezeigt. Die MessageBoxen sagen mir, daß WM_GETDATA gesendet wird und richtig ankommt. Aber WM_SENDDATA wird nicht gesendet.<br />
Warum nicht?<br />
Ich habe es auch mit SendMessage versucht, aber mit dem gleichen Ergebnis.</p>
<p>Woran liegt es?<br />
Danke für Eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1163211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1163211</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Sat, 28 Oct 2006 16:58:25 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Sat, 28 Oct 2006 17:17:25 GMT]]></title><description><![CDATA[<p>Bitte zeig mal den vollständigen Code. mit winmain Funktion und alles in einer Datei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1163225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1163225</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Sat, 28 Oct 2006 17:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Sun, 29 Oct 2006 00:44:07 GMT]]></title><description><![CDATA[<p>falsch:<br />
HWND hChild;</p>
<p>richtig:<br />
static HWND hChild;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1163494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1163494</guid><dc:creator><![CDATA[_mgs]]></dc:creator><pubDate>Sun, 29 Oct 2006 00:44:07 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Mon, 30 Oct 2006 19:55:12 GMT]]></title><description><![CDATA[<p>@_msg<br />
Danke, hätte ich eigentlich selber sehen müssen.<br />
Wenn Dummheit quietschen würde.</p>
<p>Aber jetzt kommt ein echtes Problem. Ich habe das Programm etwas ausgebaut, um mit diesen Nachrichten einen Zeiger auf eine Structur (in der die Mauskoordinaten gespeichert sind), an die ChildProc zu übergeben. Das sieht so aus:</p>
<pre><code class="language-cpp">LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   static HWND hChild;

   static OutputData OutData;

   struct OutputData *pOutData = &amp;OutData; //Initialisieren des Zeigers

   pOutData-&gt;i = 0; 

   switch (message)
   {
   	case WM_CREATE:
      {
       	hChild = CreateWindow (/*das Übliche*/);
         return 0;
      }
      //////////////////////////////////////////////////////////////////////////
      case WM_GETDATA:
      {
      	bool Pm;
      	MessageBox(hWnd, &quot;WM_GETDATA ist angekommen&quot;, &quot;Fensternachricht&quot;, MB_OK);
      	Pm = PostMessage(hChild, WM_SENDDATA, 0, (LPARAM)pOutData);

         if (Pm == FALSE)
         {
         	MessageBox(hWnd, &quot;WM_SENDDATA wurde nicht gesendet&quot;, &quot;Fensternachricht&quot;, MB_OK);
         }
         return 0;
      }

LRESULT CALLBACK ChildProc (HWND hChild, UINT message, WPARAM wParam, LPARAM lParam)
{
	static OutputData *pOutData = NULL;

	switch (message)
   {
   	case WM_CREATE:
   	{

       	PostMessage(GetParent(hChild), WM_GETDATA, 0, 0);
      	return 0;
      }

      case WM_SENDDATA:
      {  ///////////////////////////////////////////////////////////////////////
      	pOutData = (OutputData*)lParam;
         MessageBox(hChild, &quot;WM_SENDDATA angekommen&quot;, &quot;Fensternachricht&quot;, MB_OK);
         ///////////////////////////////////////////////////////////////////////
         return 0;
      }

      case WM_PAINT:
      {
      	PAINTSTRUCT ps;
         HDC			hDC;

         char szKeyStatus[40];
         int iKeyLength;

         hDC=BeginPaint(hChild, &amp;ps);
         for (pOutData-&gt;i = 0; pOutData-&gt;i&lt;4; pOutData-&gt;i++)//Hier beginnen die Probleme
         {
         	iKeyLength = wsprintf(szKeyStatus, &quot;Status Pfeiltaste %i: %i&quot;, pOutData-&gt;i, pOutData-&gt;ArrowKeys[pOutData-&gt;i]);

            GetTextExtentPoint32(hDC, szKeyStatus, iKeyLength, &amp;pOutData-&gt;size);

            TextOut(hDC, pOutData-&gt;x, pOutData-&gt;y + pOutData-&gt;i * pOutData-&gt;size.cy, szKeyStatus, iKeyLength);
            TextOut(hDC, pOutData-&gt;x, pOutData-&gt;y + 5 * pOutData-&gt;size.cy, pOutData-&gt;szLbtMsg, lstrlen(pOutData-&gt;szLbtMsg));
            TextOut(hDC, pOutData-&gt;x, pOutData-&gt;y + 6 * pOutData-&gt;size.cy, pOutData-&gt;szRbtMsg, lstrlen(pOutData-&gt;szRbtMsg));
            TextOut(hDC, pOutData-&gt;x, pOutData-&gt;y + 7 * pOutData-&gt;size.cy, pOutData-&gt;szMmvMsg, lstrlen(pOutData-&gt;szRbtMsg));
         }
         EndPaint(hChild, &amp;ps);
         return 0;
      }
</code></pre>
<p>Um genau zu sein: In der Struct sind die Daten des Mauscursors und die Koordinaten, an denen ein Button geklickt wurde, festgehalten. Die will ich im Childfenster ausgeben. Die Ausgabe im Hauptfenster funktioniert, das ist schon ausprobiert.<br />
Das Problem: Überall dort, wo über den Zeiger auf einen Member der Sturktur zugegriffen werden soll, produziert das Programm einen Zugriffsfehler- zum ersten mal eben bei dem Zähler (hab ich im Code kommentiert). Ich vermute, daß ich bei der Konvertierung und Übergabe des Zeigers in lParam etwas falsch mache (allerdings gibt es keinen Compiler-Fehler). Also, wie mache ich das richtig?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12048">@CodeFinder</a>: Bitte nicht mit &quot;reinterpret_cast&quot;, es muß ja auch eine gängige Variante geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1164864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1164864</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Mon, 30 Oct 2006 19:55:12 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Mon, 30 Oct 2006 20:11:31 GMT]]></title><description><![CDATA[<p>Überprüfe mal mit Debug-Ausgaben, in welcher Reihenfolge die Messages eintreffen. Ich würde mich nicht wundern, wenn WM_PAINT <strong>vor</strong> WM_SENDDATA eintrifft. In diesem Fall wäre pOutdata noch nicht initialisiert.</p>
<p>Warum verwendest Du für OutputData nicht einfach eine modulweit definierte Variable?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1164882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1164882</guid><dc:creator><![CDATA[_mgs]]></dc:creator><pubDate>Mon, 30 Oct 2006 20:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Tue, 31 Oct 2006 08:31:01 GMT]]></title><description><![CDATA[<p>Nein, WM_SENDDATA trifft vor WM_PAINT ein, nämlich direkt nach WM_CREATE. Das habe ich mit den MessageBoxen schon herausgefunden. Sonst dürfte die Meldung &quot;WM_SENDDATE angekommen&quot; nicht erscheinen.<br />
Aber ich kann mal versuchen, die WM-PAINT-Bearbeitung auszu&quot;if&quot;en.</p>
<p>Wie ich schon sagte, bin ich am üben. Es geht mir auch darum, daß die Strukturvariablen nur lokal verfügbar sind. Da ich den Zeiger nicht mit den Funktionsparametern übergeben kann, muß ich ihn per WM_Message abliefern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1165100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1165100</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Tue, 31 Oct 2006 08:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Tue, 31 Oct 2006 11:53:09 GMT]]></title><description><![CDATA[<p>Elektronix schrieb:</p>
<blockquote>
<p>Da ich den Zeiger nicht mit den Funktionsparametern übergeben kann, muß ich ihn per WM_Message abliefern.</p>
</blockquote>
<p>Du kannst den Zeiger mit dem letzten Funktionsparameter von CreateWindow übergeben. Hilfreich für die Fehlersuche wäre es übrigens, wenn Du den kompletten Code postest, so dass man ihn mal laufen lassen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1165254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1165254</guid><dc:creator><![CDATA[_mgs]]></dc:creator><pubDate>Tue, 31 Oct 2006 11:53:09 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Tue, 31 Oct 2006 14:10:50 GMT]]></title><description><![CDATA[<p>Elektronix schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12048">@CodeFinder</a>: Bitte nicht mit &quot;reinterpret_cast&quot;, es muß ja auch eine gängige Variante geben.</p>
</blockquote>
<p>LOL, das entspricht nem einfach C-Cast. Ist ganz einfach C++:</p>
<pre><code class="language-cpp">Type* pName = reinterpret_cast&lt;Type*&gt;(pvData);
Type* pName = (Type*)pvData;
</code></pre>
<p>_mgs schrieb:</p>
<blockquote>
<p>Warum verwendest Du für OutputData nicht einfach eine modulweit definierte Variable?</p>
</blockquote>
<p>Die sollte man immer vermeiden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /> .</p>
<p>Elektronix schrieb:</p>
<blockquote>
<p>Wie ich schon sagte, bin ich am üben. Es geht mir auch darum, daß die Strukturvariablen nur lokal verfügbar sind. Da ich den Zeiger nicht mit den Funktionsparametern übergeben kann, muß ich ihn per WM_Message abliefern.</p>
</blockquote>
<p>Ist sicherlich ne gute Übung <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="😉"
    /> . Ich würde die Initialisierung bzw Variablenübergabe aber mal so machen:</p>
<pre><code class="language-cpp">// ...
   static OutputData OutData;
   // ...
   Pm = PostMessage(hChild, WM_SENDDATA, 0, (LPARAM)&amp;OutData);

/*
   // ODER, *grinz*:
   Pm = PostMessage(hChild, WM_SENDDATA, 0, reinterpret_cast&lt;LPARAM&gt;(&amp;OutData));
*/
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Id est <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> :</p>
<pre><code class="language-cpp">LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   static HWND hChild;
   static OutputData OutData;

   switch (message)
   {
      case WM_CREATE:
      {
         OutData.i = 0;
         hChild = CreateWindow (/*das Übliche*/);
         return 0;
      }
      //////////////////////////////////////////////////////////////////////////
      case WM_GETDATA:
      {
          MessageBox(hWnd, TEXT(&quot;WM_GETDATA ist angekommen&quot;), TEXT(&quot;Fensternachricht&quot;), MB_OK);
          bool fResult = PostMessage(hChild, WM_SENDDATA, 0, (LPARAM)&amp;OutData);

         if(!fResult)
             MessageBox(hWnd, TTEXT(&quot;WM_SENDDATA wurde nicht gesendet&quot;), TEXT(&quot;Fensternachricht&quot;), MB_OK);
         return (0);
      }
// ...
</code></pre>
<p>Noch ein Hinweis: In C++ sind alle Strukturen auch Typen. Es reicht zur Definition also das:<br />
<strong>C++</strong></p>
<pre><code class="language-cpp">SInfoData data;
</code></pre>
<p>In C sähe es so aus (wie du es schon richtig gemacht hast <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 />
<strong>C</strong></p>
<pre><code class="language-cpp">struct SInfoData data;
</code></pre>
<p>Du kannst das jedoch anpassen, in dem du das Schlüsselwort <em>typedef</em> verwendest.</p>
<pre><code class="language-cpp">typedef struct
{
  int iValue;
  long lValue;
  // and so on ...
} SInfoData;
</code></pre>
<p>Finde, das sieht besser aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> . Danach reicht dann das:</p>
<pre><code class="language-cpp">SInfoData data;
</code></pre>
<p>PS: In Kombination mit dem Datentyp <em>bool</em> wird normalerweise auch <em>true</em> und <em>false</em> verwendet, nicht <em>TRUE</em> und <em>FALSE</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1165375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1165375</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 31 Oct 2006 14:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Tue, 31 Oct 2006 15:00:50 GMT]]></title><description><![CDATA[<p>Wow, CodeFinder, ich wußte, auf Dich ist Verlaß! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Ich habe Deine Tips noch nicht ausprobiert, aber danke für die umfangreichen Auskünfte.</p>
<p>Kleine Frage noch: Was ist der Unterschied zwischen <em>TRUE</em> und <em>true</em>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1165407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1165407</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Tue, 31 Oct 2006 15:00:50 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Tue, 31 Oct 2006 15:42:28 GMT]]></title><description><![CDATA[<p>Elektronix schrieb:</p>
<blockquote>
<p>Wow, CodeFinder, ich wußte, auf Dich ist Verlaß! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
</blockquote>
<p>Jo danke <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>Elektronix schrieb:</p>
<blockquote>
<p>Kleine Frage noch: Was ist der Unterschied zwischen <em>TRUE</em> und <em>true</em>?</p>
</blockquote>
<p>Hm also <em>true</em>/<em>false</em> sind <strong>Schlüsselwörter</strong>, werden also vom Compiler direkt 'erkannt'. Und<br />
<em>TRUE</em> und <em>FALSE</em> sind, von der Wertedefinition (Also: true/TRUE = 1, false/FALSE = 0) gleichwertig und einfach<br />
mit der <strong>Präprozessor-Direktive</strong> <em>#define</em> festgelegt. Nur <em>TRUE</em> und <em>FALSE</em> wurden mit dem von Windows eingeführten 'Datentyp' BOOL (entspricht int) definiert, da C keinen <strong>Typ Boolean</strong> kennt.<br />
<strong>Summa sumarum</strong> ist es also das gleich nur wenn man <em>bool</em> (C++) verwendet sollte man der Schönheit<br />
wegen auch passend dazu <em>true</em> und <em>false</em> verwenden <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/1165448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1165448</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 31 Oct 2006 15:42:28 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Wed, 01 Nov 2006 10:34:29 GMT]]></title><description><![CDATA[<p>SUPI!!! Es hat geklappt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> CodeFinder war der Schlüssel. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> Jetzt wird die Position des Mauscursers innerhalb des Cildfensters ausgegeben.</p>
<p>Danke allen Helfern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1166053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1166053</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Wed, 01 Nov 2006 10:34:29 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Wed, 01 Nov 2006 12:26:05 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>Du kannst das jedoch anpassen, in dem du das Schlüsselwort <em>typedef</em> verwendest.</p>
<pre><code class="language-cpp">typedef struct
{
  int iValue;
  long lValue;
  // and so on ...
} SInfoData;
</code></pre>
<p>Finde, das sieht besser aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> . Danach reicht dann das:</p>
<pre><code class="language-cpp">SInfoData data;
</code></pre>
</blockquote>
<p>Bringt das <em>typedef</em> eigentlich was vor dem struct? Benutze immer nur struct...<br />
Soweit ich das sehe, gibts ja mindestens 3 Varianten:</p>
<p>So mache ich das immer:</p>
<pre><code class="language-cpp">strct MyStruct
{
};
</code></pre>
<p>Á lá Mr. Codefinder:</p>
<pre><code class="language-cpp">typedef struct MyStruct
{
};
</code></pre>
<p>Kenn ich aus windows.h:</p>
<pre><code class="language-cpp">tpydef struct _MyStruct
{
} MyStruct;
</code></pre>
<p>Hier wird ja gleich schon ne Variable von MyStruct deklariert:</p>
<pre><code class="language-cpp">struct MyStruct
{
} VarMyStruct;
</code></pre>
<p>Schätze, hier wird keine Variable deklariert?:</p>
<pre><code class="language-cpp">tpydef struct _MyStruct
{
} MyStruct;
</code></pre>
<p>Wegen dem typedef?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1166151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1166151</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 01 Nov 2006 12:26:05 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichtenaustausch zwischen Fenstern on Wed, 01 Nov 2006 13:22:19 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>So mache ich das immer:</p>
<pre><code class="language-cpp">strct MyStruct
{
};
</code></pre>
</blockquote>
<p>Jo so kannstes auch machen, da du warscheinlich mit nem C++ Compiler arbeitest, dann sind structs automatisch<br />
Typen. Falls nicht müsstest du bei einer Variablendefinition/deklaration schreiben:</p>
<pre><code class="language-cpp">struct SData sdName;
</code></pre>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Hier wird ja gleich schon ne Variable von MyStruct deklariert:</p>
<pre><code class="language-cpp">struct MyStruct
{
} VarMyStruct;
</code></pre>
</blockquote>
<p>Jops.</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Schätze, hier wird keine Variable deklariert?:</p>
<pre><code class="language-cpp">tpydef struct _MyStruct
{
} MyStruct;
</code></pre>
</blockquote>
<p>Genau! Hier wird eine Strukur <em>_MyStruct</em> und ein Typ <em>MyStruct</em> definiert.</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Wegen dem typedef?</p>
</blockquote>
<p>Genau deswegen <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/1166209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1166209</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 01 Nov 2006 13:22:19 GMT</pubDate></item></channel></rss>