<?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[callback, wa ist das?]]></title><description><![CDATA[<p>Sagt mal, was sind diese Callbacks eigentlich? Sind das sowas wie Threads?<br />
Also Funktionen die den eigentlichen Programmablauf nicht weiter beeinflussen?</p>
<p>Gibts dazu irgendwo Tuts zum anlesen, bzw. Beispielcodes?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189367/callback-wa-ist-das</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 19:00:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189367.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Aug 2007 07:18:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to callback, wa ist das? on Sun, 12 Aug 2007 07:18:47 GMT]]></title><description><![CDATA[<p>Sagt mal, was sind diese Callbacks eigentlich? Sind das sowas wie Threads?<br />
Also Funktionen die den eigentlichen Programmablauf nicht weiter beeinflussen?</p>
<p>Gibts dazu irgendwo Tuts zum anlesen, bzw. Beispielcodes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343037</guid><dc:creator><![CDATA[claaas]]></dc:creator><pubDate>Sun, 12 Aug 2007 07:18:47 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Sun, 12 Aug 2007 07:56:25 GMT]]></title><description><![CDATA[<p>Sind einfache Funktionen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343039</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 12 Aug 2007 07:56:25 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Sun, 12 Aug 2007 08:33:52 GMT]]></title><description><![CDATA[<p>Übersetze doch einfach mal das Wort &quot;Callback&quot; ins deutsche, dann wird einem klar, was diese Funktion sein soll. Und mehr ist es dann auch nicht. <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/1343046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343046</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 12 Aug 2007 08:33:52 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Sun, 12 Aug 2007 22:34:51 GMT]]></title><description><![CDATA[<p>claaas schrieb:</p>
<blockquote>
<p>Sagt mal, was sind diese Callbacks eigentlich? Sind das sowas wie Threads?</p>
</blockquote>
<p>Nein. Callback(-Funktionen) sind Funktionen, die von etwas Bestimmtem aufgerufen werden. Ein gutes Beispiel ist eine Fenster-Prozedur, die vom Betriebssystem aufgerufen wird, falls es 'etwas Neues' für das Fenster gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343405</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sun, 12 Aug 2007 22:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Mon, 13 Aug 2007 09:58:11 GMT]]></title><description><![CDATA[<p>Beispiel-Code ist in Delphi, aber sollte trotzdem verständlich sein:<br />
<a href="http://www.michael-puff.de/Developer/Artikel/2006_03/Callback.shtml" rel="nofollow">http://www.michael-puff.de/Developer/Artikel/2006_03/Callback.shtml</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343586</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Mon, 13 Aug 2007 09:58:11 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Tue, 14 Aug 2007 08:25:47 GMT]]></title><description><![CDATA[<p>Ich hab folgendes in meiner Hudmanager/hud Klasse implementiert. Der thread eignet sich vielleicht ganz gut mal nen Kommentar einzufangen. War mir nämlich garnicht sicher ob das so halbwegs gut gelöst ist.</p>
<p>Programmablauf:<br />
Hud erstellen, mit callback function initialisieren und dann in den container stecken. Irgendwann dann noch rendern.</p>
<pre><code class="language-cpp">//application.cpp
Hud* TestHud = new Hud(&quot;TestHud&quot;);         //der neue hud heisst TestHud
TestHud-&gt;SetRenderCallBack(HudsOnRender);  //set the callback func

Hudmanager * Manager = new HudManager();   //HudManager (set of Huds), übernimmt rendern etc.
Manager-&gt;Add(TestHud);  //Hud in diesem Container registrieren

....

void GLRender(){
   Manager-&gt;render();   //der hud manager übernimmt das rendern
}
</code></pre>
<p>So sieht die function aus die den callback registriert. Natürlich member von class Hud</p>
<pre><code class="language-cpp">//hud.h
void SetRenderCallBack(void (*func)(Hud * thehud)){mpRenderFunc = func;};
</code></pre>
<p>Der HudContainer/Manager, iteriert durch all seine huds und ruft vor dem rendern ggfs. die CallBackfunction auf.</p>
<pre><code class="language-cpp">//hudmanager.cpp
void HudManager::render(){

	std::vector&lt;Hud*&gt;::iterator it;
	for (it=Huds.begin();it&lt;Huds.end();it++){
		if((*it)-&gt;mpRenderFunc != NULL)
			(*it)-&gt;mpRenderFunc(*it); //called just before the hud is rendered, for updates etc.

		(*it)-&gt;render();
   }

}
</code></pre>
<p>Das hier ist wieder im Hauptprogramm die Callback function die vom manager kurz vor dem Rendern aufgerufen wurde. Zeiger zum Hud Objekt kommt natürlich mitgeliefert.</p>
<pre><code class="language-cpp">//application.cpp
void HudsOnRender(Hud * thehud){
	if(thehud-&gt;getName() == &quot;TestHud&quot;){
            //react to render event, change dynamicly changing values or whatever.
	}
}
</code></pre>
<p>Könnt ihr dass so absegnen oder ist das &quot;Thema verfehlt, setzen, 6!&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343712</guid><dc:creator><![CDATA[GreyHound]]></dc:creator><pubDate>Tue, 14 Aug 2007 08:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Mon, 13 Aug 2007 21:34:30 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8004">@GreyHound</a>: Ist zwar gut, dass Du den Code 'aufs Wesentliche' reduziert hast, aber das ist etwas sehr wesentlich <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="😉"
    /> . Gibt mal ein paar Infos dazu, da fehlt mir irgendwie der Kontext.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344003</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Mon, 13 Aug 2007 21:34:30 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Tue, 14 Aug 2007 08:31:33 GMT]]></title><description><![CDATA[<p>Habs dir nochmal ein bisschen kommentiert. Es geht mir ja eher ums Prinzip, das sollte man doch recht schnell erkennen können denke ich. Der Code ansich gefällt mir ganz gut so und funktioniert auch tadellos.</p>
<p><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="😉"
    /> Dachte das der Code recht easy zu lesen ist. Btw. der ist nicht beschnitten, der läuft genau so.</p>
<p>Bin mir nur nicht sicher ob dass mit meinen Callbacks so recht ok ist oder ob man für dass was ich da mache nen andern Begriff verwendet. (Weil die Huds ja zum beispiel nicht selber für den call sorgen etc.)</p>
<p>Selbst find ichs eigendlich ganz hübsch so, is halt mein erster Versuch deswegen interessieren mich andere Meinungen darüber. Hab praktisch genau das gleiche auch für MouseMove/MouseClock etc. um HoverEffects zu rendern und zeugs auszuführen wenn man drauf clickt.</p>
<p>Das sieht dann halt dementsprechend so aus</p>
<pre><code class="language-cpp">void App::MouseClick(int x, int y, int button){
Hudmanager-&gt;Click(int x, int y, int button);
}
</code></pre>
<p>Der iteriert dann wieder du seine member, schaut nach mouseover und ruft dann ggfs. wieder ne Methode auf</p>
<pre><code class="language-cpp">OnMouseClick(Hud * theHud){//handle stuff}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1344117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344117</guid><dc:creator><![CDATA[GreyHound]]></dc:creator><pubDate>Tue, 14 Aug 2007 08:31:33 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Tue, 14 Aug 2007 13:36:55 GMT]]></title><description><![CDATA[<p>hmm trifft sich gut,<br />
hab bezüglich callbacks auch ne frage.</p>
<p>generell weis ich ja wie es funzt und wofür sie gut sind. in Dialogfenstern die mit CreateDialog aufgerufen werden klappt das immer auf anhieb.</p>
<p>Jedoch wenn ich mir zB ne Callback funktion für eine eigene Classe TabCtrl, EditCtrl, Trackbar Ctrl usw. innerhalb eines Dialoges erstellen will die mit CreateWindow o. CreateWindowEx erstellt wurden, bekomm ich entweder die CallBack nicht zum laufen, oder aber sie läuft aber das Control wird nicht mehr angezeigt.</p>
<p>der code den ich dafür versuche zu verwenden ist eigendlich nur</p>
<pre><code>HWND hWnd = CreateWindow(	.......);
SetWindowLong(hWnd, GWL_WNDPROC, (LONG) CtrlProc);

LRESULT APIENTRY  CtrlProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);

bzw.

BOOL CALLBACK  CtrlProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
</code></pre>
<p>kann mir da jemand weiterhelfen?<br />
ich bräuchte callback funktionen für Controls (Edit, Combobox, TabCtrl Slider usw...) die mit CreateWindow(Ex) erstellt wurden.</p>
<p>oder was mach ich falsch??</p>
<p>mfg<br />
artifact</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344346</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Tue, 14 Aug 2007 13:36:55 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Tue, 14 Aug 2007 14:48:25 GMT]]></title><description><![CDATA[<p>CreateWindowEx enthält keinen Übergabeparameter für eine Callback. Nimm stattdessen CreateDialog() für nicht-modale Dialoge oder DialogBox() (für modale Dialoge), oder Du mußt eine neue Fensterklasse per RegisterClassEx() anlegen. Die Callback-Funktion wird im Parameter WNDCLASS.lpfnWndProc angegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344376</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Tue, 14 Aug 2007 14:48:25 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Tue, 14 Aug 2007 14:58:22 GMT]]></title><description><![CDATA[<p>hmm,<br />
hab das jetzt mal mit RegisterClassEx() probiert. mit dem gleichen ergebniss, das Control wird nicht mehr angezeigt.</p>
<p>Registrieren tu ich so</p>
<pre><code>WNDCLASSEX wcex;

//GetParent() Handle auf das DialogFenster
HINSTANCE hInstance = (HINSTANCE) GetWindowLong(GetParent(),GWL_HINSTANCE);

wcex.cbSize		= sizeof(WNDCLASSEX); 
wcex.style		= CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc		= (WNDPROC)CtrlProc;
wcex.cbClsExtra		= 0;
wcex.cbWndExtra		= 0;
wcex.hInstance		= hInstance;
wcex.hIcon		= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAINICON));
wcex.hCursor		= LoadCursor(NULL, IDC_WAIT);
wcex.hbrBackground		= (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName		= NULL;
wcex.lpszClassName		= &quot;MeinControl&quot;;
wcex.hIconSm		= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_MAINICON));

RegisterClassEx(&amp;wcex)
</code></pre>
<p>die callback funktion starten mach ich so.</p>
<pre><code>//hWndCtrl Handle auf das Control (Edit, Combobox, Tab, Slider usw...)
SetWindowLong(hWndCtrl, GWL_WNDPROC, (LONG) CtrlProc);
</code></pre>
<p>und die callback funktion sieht so aus</p>
<pre><code>BOOL CALLBACK CtrlProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{

return DefWindowProc(hDlg, message, wParam, lParam);
}
</code></pre>
<p><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=":confused:"
      alt="😕"
    /><br />
was mach ich falsch??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344413</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Tue, 14 Aug 2007 14:58:22 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Wed, 15 Aug 2007 07:11:58 GMT]]></title><description><![CDATA[<p>Was Du machen willst, ist offensichtlich ein ChildWindow in Gestalt eines Dialogs.<br />
Ein mit RegisterClassEx registriertes Fenster rufst Du - zusätzlich zu Deinem Hauptfenster- in der WndProc mit</p>
<pre><code>LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND hCtrl;

hCtrl = CreateWindowEx()
</code></pre>
<p>auf. Finde ich bei Dir nirgends.<br />
Das</p>
<pre><code>SetWindowLong(hWndCtrl, GWL_WNDPROC, (LONG) CtrlProc);
</code></pre>
<p>kannst Du weglassen, da die CtrlProc schon in der Wndclass-Struktur festgelegt ist.</p>
<p>Hier mal ein Tutorial zu ChildWindows: <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.win-api.de/tutorials.php?tutid=12" rel="nofollow">http://www.win-api.de/tutorials.php?tutid=12</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344737</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Wed, 15 Aug 2007 07:11:58 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Wed, 15 Aug 2007 14:44:48 GMT]]></title><description><![CDATA[<p>INT_PTR CALLBACK CtrlProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); ist die korrekte Typisierung für eine Dialog-Prozedur.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8004">@GreyHound</a>: Ist okay, kannst Du so machen <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/1345124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345124</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 15 Aug 2007 14:44:48 GMT</pubDate></item><item><title><![CDATA[Reply to callback, wa ist das? on Wed, 15 Aug 2007 14:45:51 GMT]]></title><description><![CDATA[<p>Ups vergessen: @@rT!f@Ct: Oder willst Du <a href="http://winapi.net/index.php?inhalt=s27" rel="nofollow">subclassen</a>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345126</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 15 Aug 2007 14:45:51 GMT</pubDate></item></channel></rss>