<?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[Warnung beim Cast LONG_PTR nach LONG]]></title><description><![CDATA[<p>Hallo,</p>
<p>im Moment beschäftige ich mich mit dem Windows-Nachrichtensystem und der WINAPI. Dafür habe ich mir auch ein kleines Beispiel mit einigen Controls geschrieben.<br />
Für das Abfangen der Return-Taste bei der Editbox hatte ich unter <a href="http://www.winapi.net" rel="nofollow">www.winapi.net</a> eine Lösung gefunden. Die Lösung castet im Funktionsaufruf SetWindowLongPtr() den Callback ChildProc auf LONG_PTR. Dabei bekomme ich die Warnung ***&quot;conversion from 'LONG_PTR' to 'LONG', possible loss of data&quot;***.</p>
<pre><code class="language-cpp">// ...
PrevWndProcEdit = SetWindowLongPtr(hEditBox,GWLP_WNDPROC,(LONG_PTR)ChildProc);
// ...

LRESULT CALLBACK ChildProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	if (message == WM_KEYDOWN &amp;&amp; wParam == VK_RETURN)
	{
		char szText[256];
		// Text aus der Editbox holen
		GetWindowText(hEditBox, szText, 256);

		// Diesen Text in das Lable schreiben und
		// den Text der Editbox löschen
		SetWindowText(hText,szText);
		SetWindowText(hEditBox,&quot;&quot;);

		return (0);
	}
	return CallWindowProc((WNDPROC)PrevWndProcEdit,hWnd,message,wParam,lParam);
} // ChildProc
</code></pre>
<p>Jetzt habe ich zwei Fragen:</p>
<ul>
<li>Wie bekomme ich die Warnung weg?</li>
<li>Wann kann ich ein Cast im C++ Stil verwenden? Hier ergibt sich ein Fehler, wenn ich ihn einsetzen will.</li>
</ul>
<p>Vielen Dank schon im Voraus für Antworten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Gruss Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156618/warnung-beim-cast-long_ptr-nach-long</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 23:46:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156618.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Aug 2006 09:30:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warnung beim Cast LONG_PTR nach LONG on Fri, 18 Aug 2006 09:30:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>im Moment beschäftige ich mich mit dem Windows-Nachrichtensystem und der WINAPI. Dafür habe ich mir auch ein kleines Beispiel mit einigen Controls geschrieben.<br />
Für das Abfangen der Return-Taste bei der Editbox hatte ich unter <a href="http://www.winapi.net" rel="nofollow">www.winapi.net</a> eine Lösung gefunden. Die Lösung castet im Funktionsaufruf SetWindowLongPtr() den Callback ChildProc auf LONG_PTR. Dabei bekomme ich die Warnung ***&quot;conversion from 'LONG_PTR' to 'LONG', possible loss of data&quot;***.</p>
<pre><code class="language-cpp">// ...
PrevWndProcEdit = SetWindowLongPtr(hEditBox,GWLP_WNDPROC,(LONG_PTR)ChildProc);
// ...

LRESULT CALLBACK ChildProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	if (message == WM_KEYDOWN &amp;&amp; wParam == VK_RETURN)
	{
		char szText[256];
		// Text aus der Editbox holen
		GetWindowText(hEditBox, szText, 256);

		// Diesen Text in das Lable schreiben und
		// den Text der Editbox löschen
		SetWindowText(hText,szText);
		SetWindowText(hEditBox,&quot;&quot;);

		return (0);
	}
	return CallWindowProc((WNDPROC)PrevWndProcEdit,hWnd,message,wParam,lParam);
} // ChildProc
</code></pre>
<p>Jetzt habe ich zwei Fragen:</p>
<ul>
<li>Wie bekomme ich die Warnung weg?</li>
<li>Wann kann ich ein Cast im C++ Stil verwenden? Hier ergibt sich ein Fehler, wenn ich ihn einsetzen will.</li>
</ul>
<p>Vielen Dank schon im Voraus für Antworten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Gruss Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119675</guid><dc:creator><![CDATA[noram]]></dc:creator><pubDate>Fri, 18 Aug 2006 09:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to Warnung beim Cast LONG_PTR nach LONG on Fri, 18 Aug 2006 09:40:41 GMT]]></title><description><![CDATA[<p>noram schrieb:</p>
<blockquote>
<ul>
<li>Wie bekomme ich die Warnung weg?</li>
</ul>
</blockquote>
<p>mit</p>
<pre><code class="language-cpp">#pragma warning( disable : 4311 )
PrevWndProcEdit = SetWindowLongPtr( hEditBox, GWLP_WNDPROC, (LONG_PTR)ChildProc );
#pragma warning( default : 4311 )
</code></pre>
<p>noram schrieb:</p>
<blockquote>
<p>Wann kann ich ein Cast im C++ Stil verwenden? Hier ergibt sich ein Fehler, wenn ich ihn einsetzen will.</p>
</blockquote>
<p>Du kannst C++-Style Casts in C++-Code verwenden... zB:</p>
<pre><code class="language-cpp">PrevWndProcEdit = SetWindowLongPtr( hEditBox, GWLP_WNDPROC, reinterpret_cast&lt; LONG_PTR &gt;( ChildProc ) );
</code></pre>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119683</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Fri, 18 Aug 2006 09:40:41 GMT</pubDate></item><item><title><![CDATA[Reply to Warnung beim Cast LONG_PTR nach LONG on Fri, 18 Aug 2006 09:58:23 GMT]]></title><description><![CDATA[<p>Vielen Dank Swordfish. <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="🙂"
    /> Mein Code sieht nun mit Deinen Änderungen so aus.</p>
<pre><code class="language-cpp">...
#pragma warning( disable : 4244 )
PrevWndProcEdit = SetWindowLongPtr( hEditBox, GWLP_WNDPROC, reinterpret_cast&lt; LONG_PTR &gt; (ChildProc) );
#pragma warning( default : 4244 )
...

LRESULT CALLBACK ChildProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    if (message == WM_KEYDOWN &amp;&amp; wParam == VK_RETURN)
    {
        char szText[256];
        // Text aus der Editbox holen
        GetWindowText(hEditBox, szText, 256);

        // Diesen Text in das Lable schreiben und
        // den Text der Editbox löschen
        SetWindowText(hText,szText);
        SetWindowText(hEditBox,&quot;&quot;);

        return (0);
    }
    return CallWindowProc((WNDPROC)PrevWndProcEdit,hWnd,message,wParam,lParam);
} // ChildProc
</code></pre>
<p>Haben die Callbacks stehts einen Wertebereich wie LONG_PTR oder kann es da zu Datenverlust beim Casten kommen?</p>
<p>Gruss</p>
<p>Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119701</guid><dc:creator><![CDATA[noram]]></dc:creator><pubDate>Fri, 18 Aug 2006 09:58:23 GMT</pubDate></item><item><title><![CDATA[Reply to Warnung beim Cast LONG_PTR nach LONG on Fri, 18 Aug 2006 10:10:39 GMT]]></title><description><![CDATA[<p>noram schrieb:</p>
<blockquote>
<p>Haben die Callbacks stehts einen Wertebereich wie LONG_PTR oder kann es da zu Datenverlust beim Casten kommen?</p>
</blockquote>
<p>&quot;Callbacks&quot; sind nichts anderes als <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="➡"
    /> <a href="http://www.newty.de/fpt/index.html" rel="nofollow">Funktionszeiger</a> und sind auf 32-Bit-Systemen immer 32 Bit und auf 64-Bit-System immer 64 Bit breit. Da auf 64-Bit-Systemen LONG_PTR ein typedef auf <em>__uint64</em> sein sollte gibt es auch da keine Probleme.</p>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119714</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Fri, 18 Aug 2006 10:10:39 GMT</pubDate></item><item><title><![CDATA[Reply to Warnung beim Cast LONG_PTR nach LONG on Fri, 18 Aug 2006 10:36:09 GMT]]></title><description><![CDATA[<p>Nochmal vielen Dank Swordfish. Damit sind alle meine Fragen beantwortet und es hat mir wirklich weitergeholfen. <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>Greetz, Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119738</guid><dc:creator><![CDATA[noram]]></dc:creator><pubDate>Fri, 18 Aug 2006 10:36:09 GMT</pubDate></item></channel></rss>