<?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[MDI und Callback Funktion]]></title><description><![CDATA[<p>SERVUS.</p>
<p>ich habe eine MDI application programmiert. das problem ist nun aber, dass alle CHILDREN - WINDOWS die gleiche CALLBACK FUNKTION haben. dass heisst, wenn ich mehrere fenster öffne, und in einem etwas ändern möchte, dann findet die gleiche veränderung in allen anderen offenen fenstern auch statt.</p>
<p>wie kann ich diesem problem herr werden?<br />
gibts dazu nen guten LINK irgendwo?</p>
<p>DANKE.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/134015/mdi-und-callback-funktion</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 13:54:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/134015.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Jan 2006 01:32:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MDI und Callback Funktion on Thu, 26 Jan 2006 13:07:42 GMT]]></title><description><![CDATA[<p>SERVUS.</p>
<p>ich habe eine MDI application programmiert. das problem ist nun aber, dass alle CHILDREN - WINDOWS die gleiche CALLBACK FUNKTION haben. dass heisst, wenn ich mehrere fenster öffne, und in einem etwas ändern möchte, dann findet die gleiche veränderung in allen anderen offenen fenstern auch statt.</p>
<p>wie kann ich diesem problem herr werden?<br />
gibts dazu nen guten LINK irgendwo?</p>
<p>DANKE.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973546</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Thu, 26 Jan 2006 13:07:42 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Mon, 23 Jan 2006 08:47:22 GMT]]></title><description><![CDATA[<p>Ist doch klar: Wenn du für alle Fenster die gleiche Funktion zuweist, reagieren alle Fenster gleich. Jede Callback-Funktion eines Child-Windows muß einen individuellen Namen haben, z. Bsp: LRESULT CALLBACK ChildProc01, LRESULT CALLBACK ChildProc02. Die Fuktionsnamen werden bei den Fensterparametern eingegeben und hinterher extra implementiert:</p>
<p>LRESULT CALLBACK ChildProc01(HWND hWnd, UINT msg, LPARAM lParam, WPARAM wParam)<br />
{<br />
...<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973614</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Mon, 23 Jan 2006 08:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Mon, 23 Jan 2006 11:06:24 GMT]]></title><description><![CDATA[<p>SERVUS.</p>
<p>das ist mir schon bewusst, dass verschiedenen fenstern verschiedene funktionen zugewiesen werden sollten.<br />
ich will ja aber auch das GLEICHE fenster beliebig oft aufrufen, also wird dieses fenster immer wieder die gleiche CALLBACK FUNKTION haben. wenn ich aber dann in einem der fenster zum beispiel ZOOME, dann will ich nicht, dass in den anderen fenstern vom gleichen typ auch hereingezoomt wird. also wird es sich dann doch um eine andere CALLBACK FUNKTION handeln.</p>
<p>kann man denn eine art ARRAY mit CALLBACK FUNKTIONEN machen, deren anzahl dann davon abhängt, wie oft ich das fenster geöffnet habe?</p>
<p>ich will nämlich nicht am anfang eine bestimmte anzahl von CALLBACK FUNKTIONEN festlegen, weil einfach gar nicht geklärt ist, wie oft das fenster vom user geöffnet werden wird.</p>
<p>ich hoffe, ich habe mich halbwegs verständlich ausgedrückt.</p>
<p>DANKE SCHONMAL FÜR INSPIRATIONEN.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973726</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Mon, 23 Jan 2006 11:06:24 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Mon, 23 Jan 2006 12:10:50 GMT]]></title><description><![CDATA[<p>Das müßte über das Fensterhandle gehen. Jedes Fenster bekommt beim Öffnen ein eigenes Handle zugewiesen, auch, wenn es das gleiche Fenster ist. Das Handle kann mit &quot;GetModuleHandle&quot; ermittelt werden.</p>
<p>&quot;If this parameter is NULL, GetModuleHandle returns a handle of the file used to create the calling process.&quot;</p>
<p>Vielleicht, wenn die Handles in einem Array gespeichert werden...(fragt sich halt, wie groß das Array sein soll, wenn man das Fenster &quot;beliebig&quot; oft öffnen kann <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="😕"
    />)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973790</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Mon, 23 Jan 2006 12:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Wed, 25 Jan 2006 04:56:12 GMT]]></title><description><![CDATA[<p>HALLO.</p>
<p>ich muss ehrlich sagen, dass ich nicht 100% weis, mit der GetModuleHandle funktion umzugehen.<br />
ich denke einbinden muss ich GetModuleHandle in die CreateWindowEx, kann ich aber auch dort die erhaltenen daten in ein array einfügen?</p>
<p>ich dachte, vielleicht so, aber so richtig klappts nicht:</p>
<pre><code class="language-cpp">HWND       hChild;
HINSTANCE  test[4];
int g_iNumChild = 0;

hChild = CreateWindowEx(WS_EX_MDICHILD,g_szChildClassName,&quot;OpenGL window&quot;, 
WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,0,0,350,350,
g_hMDIClient,NULL, test[g_iNumChild]=GetModuleHandle(NULL),&amp;cs);

g_iNumChild++;
</code></pre>
<p>DANKE.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/975490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/975490</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Wed, 25 Jan 2006 04:56:12 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Wed, 25 Jan 2006 10:23:45 GMT]]></title><description><![CDATA[<p>Nur auf die Schnelle:</p>
<p>Wie schon gesagt: GetModuleHandle liefert das Handle des geforderten Moduls zurück. Diesen Wert hannst Du dann zwischenspeichern, z. B.<br />
int Window[20]<br />
...<br />
Window[i] = GetModulHandle (NULL)<br />
...</p>
<p>Schau ruhig auch im MSDN nach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/975714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/975714</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Wed, 25 Jan 2006 10:23:45 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Wed, 25 Jan 2006 15:24:00 GMT]]></title><description><![CDATA[<p>man könnte da doch sicher auch mit SetWindowLong arbeiten, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976078</guid><dc:creator><![CDATA[ItsNotYou]]></dc:creator><pubDate>Wed, 25 Jan 2006 15:24:00 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Thu, 26 Jan 2006 10:33:09 GMT]]></title><description><![CDATA[<p>SERVUS.</p>
<p>Elektronix schrieb:</p>
<blockquote>
<p>int Window[20]<br />
...<br />
Window[i] = GetModulHandle (NULL)</p>
</blockquote>
<p>wie stellst du dir eine umwandlung von einer INTEGER ZAHL in eine HINSTANCE vor? mein compiler macht da nicht mit.<br />
(error C2440: '=' : 'struct HINSTANCE__ *' kann nicht in 'int' konvertiert werden)</p>
<p>grüsse.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976659</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Thu, 26 Jan 2006 10:33:09 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Thu, 26 Jan 2006 10:58:46 GMT]]></title><description><![CDATA[<p>Gibt denn der Aufruf der CALLBACK Funktion nicht schon das passende Handle genau fuer diese eine Instanz des Clients zurueck? Da muss nur noch fuer jede Instanz von diesem Client ein eigener Speicherbereich fuer die Dauer seines &quot;Lebens&quot; bereitgestellt werden.</p>
<p>(Wenn man also z.B. 5 VERSCHIDENE Clients vordefiniert, so kann man von jedem Client beliebig viele Instanzen zur Laufzeit erzeugen. Und jede (Instanz) soll unabhaengig von der anderen (Instanz) des gleichen Clients sein.</p>
<p>Wenn das so ist, dann funktioniert es so (fuer jede Client-Callback-Funktion):</p>
<p>global :</p>
<pre><code class="language-cpp">typedef struct tagMDDATA
{
	stDISC stDisc;
	CSBAR  sbMD;  // 
	CTABC  tcMD;
	HWND   hTab;  // Handle des TabControl
	CREDIT reMD;
} MDDATA, * PMDDATA;
</code></pre>
<p>in WM_CREATE:</p>
<pre><code class="language-cpp">...
		// Platz für individuelle Daten
		pMDData = (PMDDATA) HeapAlloc (GetProcessHeap (),
		                               HEAP_ZERO_MEMORY, sizeof (MDDATA));

		// Handle des Rahmen- und des Client-Fensters festhalten:
		hwndClient = GetParent (hwnd);
		hwndFrame  = GetParent (hwndClient);

		// Statusbar erzeugen:
		SetWindowLong (hwnd, 0, (long) pMDData);
		pMDData-&gt;sbMD.Init (hwnd, NUM_FIELDS);   // VARIANTE 1
		//pMDData-&gt;hwndSBar = sbMD.Init (hwnd);  // VARIANTE 2

		// TabControl erzeugen:
		pMDData-&gt;hTab = pMDData-&gt;tcMD.Init (hwnd, NUM_TABS);

		// Ausgabefenster auf dem TabControl erzeugen:
		pMDData-&gt;reMD.Init (pMDData-&gt;hTab, 0);
		break;
</code></pre>
<p>in WM_SIZE z.B.: so:</p>
<pre><code class="language-cpp">case WM_SIZE:
		pMDData = (PMDDATA) GetWindowLong (hwnd, 0);
		GetClientRect (hwnd, &amp;rect);

		// Statusbar anzeigen:
		pMDData-&gt;sbMD.ScaleSBar ();  // VARIANTE 1
		pMDData-&gt;sbMD.WriteSBarField (0, TEXT(&quot;No disc&quot;));
		pMDData-&gt;sbMD.WriteSBarField (1, TEXT(&quot;No track&quot;));
		pMDData-&gt;sbMD.WriteSBarField (2, TEXT(&quot;mm:ss&quot;));
		pMDData-&gt;sbMD.WriteSBarField (3, TEXT(&quot;Power OFF&quot;));
		...
</code></pre>
<p>usw.</p>
<p>Sind hier nur Beispiele. Die Vorgehensweise hab' ich auch nur aus der MSDN - ist ganz gut beschrieben.</p>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976745</guid><dc:creator><![CDATA[*Blackbird*]]></dc:creator><pubDate>Thu, 26 Jan 2006 10:58:46 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Thu, 26 Jan 2006 11:09:28 GMT]]></title><description><![CDATA[<p>Hab' noch was vergessen:</p>
<pre><code class="language-cpp">case WM_DESTROY:
		pMDData = (PMDDATA) GetWindowLong (hwnd, 0);
		HeapFree (GetProcessHeap (), 0, pMDData);
</code></pre>
<p>Die Types<br />
CSBAR sbMD;<br />
CTABC tcMD;<br />
CREDIT reMD;</p>
<p>sind Klassen, die alle Methoden fuer die Controls enthalten, z.B.: fuer die Statusbar</p>
<pre><code class="language-cpp">CSBAR::CSBAR (HWND hwnd, int iFields)
{
	if (!hwnd)
		return;

	m_hwnd = hwnd;
	m_iFields = iFields;
	m_hwndSbar = InitSBar ();
};
</code></pre>
<p>Hier wird das Handle der Instanz (eines Clients) an die Statusbar uebergeben:</p>
<pre><code class="language-cpp">pMDData-&gt;sbMD.Init (hwnd, NUM_FIELDS);   // VARIANTE 1
</code></pre>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976758</guid><dc:creator><![CDATA[*Blackbird*]]></dc:creator><pubDate>Thu, 26 Jan 2006 11:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Thu, 26 Jan 2006 11:41:59 GMT]]></title><description><![CDATA[<p>[quote]wie stellst du dir eine umwandlung von einer INTEGER ZAHL in eine HINSTANCE vor? mein compiler macht da nicht mit. [/quote]<br />
Hast Recht, war ein bißchen zu sehr aus dem Bauch geschossen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/976816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976816</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Thu, 26 Jan 2006 11:41:59 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Thu, 26 Jan 2006 13:08:15 GMT]]></title><description><![CDATA[<p>AN BLACKBIRD:</p>
<p>also ich muss leider sagen, dass ich nichts verstehe von dem, was du schreibst. hab auch irgendwie das gefühl, dass das nicht so zu meiner frage passt (?). weiss zum beispiel gar nicht, wozu ich WM_SIZE und so brauche und was die klassen der statusbar mit meinem problem zu tun haben.</p>
<p>mein problem ist einfach so, dass ich ein MAIN MDI WINDOW habe, mit ner TOOLBAR. wenn ich auf den button drücke, kommt ein OpenGL window, das ein CHILD WINDOW ist. in der CALLBACK FUNKTION für dieses child fenster steht, dass beim drücken von F1 eingezoomt wird. nun soll dieses zoomen aber immer nur beim aktiven fenster erfolgen, nicht bei allen OpenGl-fenstern. man müsste also auch irgendwie abfragen, welches fenster gerade aktiv ist.</p>
<p>DANKE schonmal, falls du noch irgendwelche ideen hast.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976916</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Thu, 26 Jan 2006 13:08:15 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Thu, 26 Jan 2006 14:09:35 GMT]]></title><description><![CDATA[<p>Deine Callback-Funktion hat eine WM_CREATE case-Falle?<br />
Wenn ja, dann muss dort das Handle (als Parameter HWND hwnd im Funktionsaufruf) dieser Instanz gespeichert werden. Und zwar in einem eigenen Speicherbereich:</p>
<pre><code class="language-cpp">// Platz für individuelle Daten
        pMDData = (PMDDATA) HeapAlloc (GetProcessHeap (),
                                       HEAP_ZERO_MEMORY, sizeof (MDDATA));
</code></pre>
<p>Die Struct pMMDDate ist hier nur Beispiel, sie kann auch aus nur einem Element (dem Handle) bestehen.</p>
<p>Mit</p>
<pre><code class="language-cpp">SetWindowLong (hwnd, 0, (long) pMDData);
        pMDData-&gt;sbMD.Init (hwnd, NUM_FIELDS);   // VARIANTE 1
</code></pre>
<p>wird das Handle gespeichert, hier fuer eine Statusbar. Dann nochmals fuer ein Tab-Feld und ein Edit-Fenster. Ist hier nur ein Beispiel. Das kannst Du natuerlich viel einfacher machen.<br />
Einfach nur das Handle speichern.</p>
<p>In Deinem Code in der case-Falle WM_COMMAND wird irgendwo die F1-Taste verarbeitet. Dort muss alles was Deine Instanz betrifft (zoomen), mit genau diesem Handle passieren. Und das holt man sich so, wie ich es in WM_SIZE gezeigt habe (zuerst die struct, darin ist das Handle):</p>
<pre><code class="language-cpp">case WM_SIZE:
        pMDData = (PMDDATA) GetWindowLong (hwnd, 0);
</code></pre>
<p>Der restliche Code zeigt nur beispielhaft, wie es geht.<br />
Den Speicherbereich immer freigeben, wenn die Instanz des Childs zerstoert wird.</p>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976994</guid><dc:creator><![CDATA[*Blackbird*]]></dc:creator><pubDate>Thu, 26 Jan 2006 14:09:35 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Mon, 30 Jan 2006 06:56:37 GMT]]></title><description><![CDATA[<p>SERVUS.</p>
<p>habe in meinem programm folgendes hinzugefügt, klappt aber leider immer noch nicht. vielleicht kann jemand den grund für folgende fehlermeldung finden:<br />
&quot;error C2228: Der linke Teil von '.Init' muss eine Klasse/Struktur/Union sein&quot;</p>
<p>global:</p>
<pre><code class="language-cpp">typedef struct tagMDDATA
{
    HWND   hTab;
} MDDATA, *PMDDATA;
</code></pre>
<p>am anfang der Callbackfunktion habe ich folgende variable definiert:</p>
<pre><code class="language-cpp">PMDDATA pMDData;
</code></pre>
<p>WM_CREATE:</p>
<pre><code class="language-cpp">pMDData = (PMDDATA) HeapAlloc (GetProcessHeap (),
          HEAP_ZERO_MEMORY, sizeof (MDDATA));
SetWindowLong (hWnd, 0, (long) pMDData);	
pMDData-&gt;hTab.Init (hWnd);
</code></pre>
<p>WM_SIZE:</p>
<pre><code class="language-cpp">pMDData = (PMDDATA) GetWindowLong (hWnd, 0);
</code></pre>
<p>WM_CLOSE:</p>
<pre><code class="language-cpp">pMDData = (PMDDATA) GetWindowLong (hWnd, 0);
HeapFree (GetProcessHeap (), 0, pMDData);
</code></pre>
<p>DANKE schonmal.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/980678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/980678</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Mon, 30 Jan 2006 06:56:37 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Mon, 30 Jan 2006 13:41:18 GMT]]></title><description><![CDATA[<p>Du weißt inzwischen, ich bin auch Anfänger <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="🙂"
    /> Aber hast Du es schon mal mit<br />
cbWndExtra versucht?</p>
<p>[quote]<br />
Specifies the number of extra bytes to allocate following the window instance. The operating system initializes the bytes to zero. If an application uses the WNDCLASS structure to register a dialog box created by using the CLASS directive in the resource file, it must set this member to DLGWINDOWEXTRA. [/quote]<br />
Also, den Status des Fensters in WndClassExtra speichern... ist halt so ne Idee...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/981069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/981069</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Mon, 30 Jan 2006 13:41:18 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Tue, 31 Jan 2006 07:27:33 GMT]]></title><description><![CDATA[<p>Statt</p>
<pre><code class="language-cpp">pMDData-&gt;hTab.Init (hWnd);
</code></pre>
<p>einfach nur</p>
<pre><code class="language-cpp">pMDData-&gt;hTab = hWnd;
</code></pre>
<p>Weil: Deine Struct MDData enthaelt keine Klasse (wie in meinem Beispiel), sondern nur das Handle.</p>
<p>Und wenn die F1-Taste verarbeitet wird, musst Du das gespeicherte Handle auch verwenden:</p>
<pre><code class="language-cpp">case WM_KEYDOWN:
  pMDData = (PMDDATA) GetWindowLong (hWnd, 0); 
  if (pMDData-&gt;hTab == (HWND)lParam &amp;&amp; VK_F1 == wParam)
  {
    MessageBox (pMDData-&gt;hTab, &quot;F1 down&quot;, &quot;Eingabebox&quot;, MB_OK); // nur Beispiel!
  }
...
</code></pre>
<p>Wo die F1-Taste abgefangen wird; das kann bei Dir auch anders aussehen.</p>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/981715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/981715</guid><dc:creator><![CDATA[*Blackbird*]]></dc:creator><pubDate>Tue, 31 Jan 2006 07:27:33 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Tue, 31 Jan 2006 11:22:26 GMT]]></title><description><![CDATA[<p>SERVUS BLACKBIRD.</p>
<p>danke für die antwort. ich werde deine hinweise mit einbauen und sag dann bescheid, ob alles funktioniert hat.</p>
<p>STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/981875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/981875</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Tue, 31 Jan 2006 11:22:26 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Tue, 04 Apr 2006 07:13:51 GMT]]></title><description><![CDATA[<p>HALLO.</p>
<p>ich hatte vor einer weile (23.01.2006) dieses problem mit MDI und verschiedenen CALLBACK FUNKTIONEN gepostet.</p>
<p>leider bin ich seit dem nicht mehr dazu gekommen, das zu ende zu bringen. darum wollte ich jetzt noch einmal nachfragen, ob mir noch jemand helfen kann?? <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>
<p>ich habe immer noch das problem, dass ich nicht weis, wie ich das gespeicherte HANDLE für meine verschiedenen CALLBACK FUNKTIONEN wieder verwenden kann. ich habe es jetzt am beispiel der F1 taste so gemacht, aber wenn ich F1 betätige, dann stürzt das program ab.</p>
<pre><code class="language-cpp">case WM_KEYDOWN:			
{
   pMDData = (PMDDATA) GetWindowLong (hWnd, 0);
   if (pMDData-&gt;hTab == (HWND)lParam &amp;&amp; PAD[wParam] == TRUE)
      MessageBox (pMDData-&gt;hTab, &quot;F1 down&quot;, &quot;Eingabebox&quot;, MB_OK);
   return 0;				
}
</code></pre>
<p>DANKE. <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="🙂"
    /><br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1030025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030025</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Tue, 04 Apr 2006 07:13:51 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Tue, 04 Apr 2006 12:02:10 GMT]]></title><description><![CDATA[<p>An welcher Stelle genau stürzt er denn ab?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1030285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030285</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Tue, 04 Apr 2006 12:02:10 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Tue, 04 Apr 2006 13:42:12 GMT]]></title><description><![CDATA[<p>das programm macht nicht mehr weiter, wenn ich auf F1 drücke.</p>
<p>STICK. <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/1030303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030303</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Tue, 04 Apr 2006 13:42:12 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Tue, 04 Apr 2006 13:47:54 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">PAD[wParam]
</code></pre>
</blockquote>
<p>das dürfte in einen Speicherbereich zeigen, der nicht zu Deinem Prozess gehört.</p>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1030308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030308</guid><dc:creator><![CDATA[*Blackbird*]]></dc:creator><pubDate>Tue, 04 Apr 2006 13:47:54 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Tue, 04 Apr 2006 13:50:05 GMT]]></title><description><![CDATA[<p>Du drückst dich nicht gerade präzise aus. Wie genau sieht der Fehler aus? Zugriffsverletzung? Wenn ja, wo tritt diese auf (in welcher Zeile)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1030310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030310</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Tue, 04 Apr 2006 13:50:05 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Tue, 04 Apr 2006 14:40:33 GMT]]></title><description><![CDATA[<p>ja. hast ja recht, damit kann man als aussenstehender ohne quellcode vor augen nicht viel anfangen. darum hier jetzt mehr informationen:</p>
<p>fehlermeldung:</p>
<blockquote>
<p>unbehandelte ausnahme in api6.exe: 0*C000000005 access violation</p>
</blockquote>
<p>an folgender stelle:</p>
<blockquote>
<p>if (pMDData-&gt;hTab == (HWND)lParam &amp;&amp; PAD[wParam] == TRUE)</p>
</blockquote>
<p>dazu muss ich aber sagen, dass ich zuvor, also bevor ich die callbackfunktion angenfangen habe zu verändern für viele childwindows, folgenden code hatte und da gab es keine access violation meldung bei F1 betätigung. soll heissen, dass es da keine problem mit dem speicherzugriff geben müsste.</p>
<pre><code class="language-cpp">case WM_KEYDOWN:			
{
   PAD[wParam] == TRUE;
   return 0;				
}
</code></pre>
<p>okay. lasst mich bitte wissen, wenn ihr noch mehr infos zu meinem code braucht.<br />
DANKE!</p>
<p>STICK <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/1030329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030329</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Tue, 04 Apr 2006 14:40:33 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Wed, 05 Apr 2006 15:24:29 GMT]]></title><description><![CDATA[<p>Hast du mal pMDData-&gt;hTab == (HWND)lParam oder PAD[wParam] == TRUE weggelassen`- dann sollte ja zumindest in einem Fall die Fehlermeldung ja weg sein.</p>
<blockquote>
<pre><code class="language-cpp">PAD[wParam] == TRUE;
</code></pre>
</blockquote>
<p>Was soll das tun <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1031212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1031212</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 05 Apr 2006 15:24:29 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Wed, 05 Apr 2006 18:22:17 GMT]]></title><description><![CDATA[<blockquote>
<p>Hast du mal pMDData-&gt;hTab == (HWND)lParam oder PAD[wParam] == TRUE weggelassen`</p>
</blockquote>
<p>JA. das habe ich gerade gemacht. die fehlermeldung verschwindet dann auch. aber das problem ist dann, dass natürlich bei einer betätigung der F1 taste kein zoomen mehr ermöglicht wird. denn in einer while schleife, die u.a. auch meine OpenGL scene zeichnet, befindet sich auch folgender code:</p>
<pre><code>if (PAD[VK_F1])		
   zoom +=0.2f;			
if (PAD[VK_F2])		
   zoom -=0.2f;
</code></pre>
<p>was soll ich denn nun machen?</p>
<p>STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1031339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1031339</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Wed, 05 Apr 2006 18:22:17 GMT</pubDate></item><item><title><![CDATA[Reply to MDI und Callback Funktion on Wed, 05 Apr 2006 18:46:47 GMT]]></title><description><![CDATA[<p>Ich hatte eigentlich nicht gemeint, dass du das ganz weglässt, sondern wollte nur den Fehler einschränken, also ob es an</p>
<pre><code class="language-cpp">pMDData-&gt;hTab == (HWND)lParam
</code></pre>
<p>oder an</p>
<pre><code class="language-cpp">PAD[wParam] == TRUE
</code></pre>
<p>liegt....</p>
<p>Aber ich denke, dass am ehesten PAD[wParam] den Fehler verursacht, also dass wParam vielleicht manchmal ein ungültiger Index ist <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="😕"
    /> Du kannst ja mal über den Debugger schauen, ob es bei jedem WM_KEYDOWN dort abstürzt und was für Werte die einzelnen Variablen dort haben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1031352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1031352</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 05 Apr 2006 18:46:47 GMT</pubDate></item></channel></rss>