<?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[subclassing eines scrollbalkens auf 2 arten, 1e funktioniert]]></title><description><![CDATA[<p>So funktionierts:<br />
[cpp]static LONG_PTR PrevWndProcEdit;<br />
LRESULT CALLBACK subClass(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)<br />
{<br />
return CallWindowProc((WNDPROC)<strong>PrevWndProcEdit</strong>,hDlg,message,wParam,lParam);<br />
}<br />
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)<br />
{<br />
static HWND hwndScroll;<br />
switch (message)<br />
{<br />
case WM_CREATE:<br />
{<br />
hwndScroll = CreateWindow(<br />
&quot;scrollbar&quot;,<br />
NULL,<br />
WS_CHILD | SBS_VERT|WS_VISIBLE|WS_TABSTOP,<br />
0,<br />
0,<br />
100,<br />
200,<br />
hWnd,<br />
(HMENU) 0,<br />
hInst,<br />
NULL);<br />
SetScrollRange(hwndScroll,SB_CTL,0,255,false);<br />
SetScrollPos(hwndScroll,SB_CTL,0,false);<br />
ShowWindow(hwndScroll,true);<br />
PrevWndProcEdit = SetWindowLong (hwndScroll, GWL_WNDPROC,<br />
(LONG_PTR) subClass);<br />
return 0;<br />
}<br />
case WM_DESTROY:<br />
PostQuitMessage(0);<br />
return 0;<br />
}<br />
return DefWindowProc(hWnd, message, wParam, lParam);<br />
}[/cpp]<br />
So Funktionierts nicht: (es wird also der Scrollbalken nicht angezeigt - aber warum? - bekommt die Funktion WndProc jedesmal eine neue Adresse?)</p>
<pre><code class="language-cpp">LRESULT CALLBACK subClass(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	return CallWindowProc((WNDPROC)WndProc,hDlg,message,wParam,lParam);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/99606/subclassing-eines-scrollbalkens-auf-2-arten-1e-funktioniert</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 10:57:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/99606.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 30 Jan 2005 10:53:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to subclassing eines scrollbalkens auf 2 arten, 1e funktioniert on Sun, 30 Jan 2005 10:53:45 GMT]]></title><description><![CDATA[<p>So funktionierts:<br />
[cpp]static LONG_PTR PrevWndProcEdit;<br />
LRESULT CALLBACK subClass(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)<br />
{<br />
return CallWindowProc((WNDPROC)<strong>PrevWndProcEdit</strong>,hDlg,message,wParam,lParam);<br />
}<br />
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)<br />
{<br />
static HWND hwndScroll;<br />
switch (message)<br />
{<br />
case WM_CREATE:<br />
{<br />
hwndScroll = CreateWindow(<br />
&quot;scrollbar&quot;,<br />
NULL,<br />
WS_CHILD | SBS_VERT|WS_VISIBLE|WS_TABSTOP,<br />
0,<br />
0,<br />
100,<br />
200,<br />
hWnd,<br />
(HMENU) 0,<br />
hInst,<br />
NULL);<br />
SetScrollRange(hwndScroll,SB_CTL,0,255,false);<br />
SetScrollPos(hwndScroll,SB_CTL,0,false);<br />
ShowWindow(hwndScroll,true);<br />
PrevWndProcEdit = SetWindowLong (hwndScroll, GWL_WNDPROC,<br />
(LONG_PTR) subClass);<br />
return 0;<br />
}<br />
case WM_DESTROY:<br />
PostQuitMessage(0);<br />
return 0;<br />
}<br />
return DefWindowProc(hWnd, message, wParam, lParam);<br />
}[/cpp]<br />
So Funktionierts nicht: (es wird also der Scrollbalken nicht angezeigt - aber warum? - bekommt die Funktion WndProc jedesmal eine neue Adresse?)</p>
<pre><code class="language-cpp">LRESULT CALLBACK subClass(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	return CallWindowProc((WNDPROC)WndProc,hDlg,message,wParam,lParam);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/710173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/710173</guid><dc:creator><![CDATA[ichverstehewasnicht]]></dc:creator><pubDate>Sun, 30 Jan 2005 10:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to subclassing eines scrollbalkens auf 2 arten, 1e funktioniert on Sun, 30 Jan 2005 11:33:36 GMT]]></title><description><![CDATA[<p>CallWindowProc benötigt einen funktionszeiger nicht die funktion an sich.<br />
ich vermute mal das intern dann der zeiger aufgerufen. am besten wäre es du würdest mal etwas über funktionszeiger lesen<br />
<a href="http://www.function-pointer.org/" rel="nofollow">http://www.function-pointer.org/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/710207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/710207</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Sun, 30 Jan 2005 11:33:36 GMT</pubDate></item><item><title><![CDATA[Reply to subclassing eines scrollbalkens auf 2 arten, 1e funktioniert on Sun, 30 Jan 2005 13:34:54 GMT]]></title><description><![CDATA[<p>richtig ist:<br />
[cpp]<br />
return CallWindowProc((WNDPROC)<strong>PrevWndProcEdit</strong>,hDlg,message,wParam,lParam);<br />
[/cpp]<br />
Du mußt aus der Subclass-WndProc die alte WndProc der Scrollbars aufrufen, sonst gehts nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/710304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/710304</guid><dc:creator><![CDATA[MichaM.]]></dc:creator><pubDate>Sun, 30 Jan 2005 13:34:54 GMT</pubDate></item></channel></rss>