<?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[Reaktion auf Mausklick + instanzierung von Fenstern]]></title><description><![CDATA[<p>ich möchte wenn ich auf das erstellte frame klicke ein 2tes Frame öffnen der gleichen instanz und dabei die ausgabe von werten innerhalb dieser frames trennen.</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;

LRESULT WINAPI MainWndProc( HWND, UINT, WPARAM, LPARAM );

/*******************  Global Variables ********************/

int PASCAL WinMain( HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpszCmdLine,
    int nCmdShow )
{
   WNDCLASS wc;
   MSG msg;
   HWND hWnd;

   if( !hPrevInstance )
   {
      wc.lpszClassName = &quot;MiniAppClass&quot;;
      wc.lpfnWndProc = MainWndProc;
      wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
      wc.hInstance = hInstance;
      wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
      wc.hCursor = LoadCursor( NULL, IDC_ARROW );
      wc.hbrBackground = (HBRUSH)( COLOR_WINDOW+1 );

      wc.lpszMenuName = NULL;
      wc.cbClsExtra = 0;
      wc.cbWndExtra = 0;

      RegisterClass( &amp;wc );
   }

   hWnd = CreateWindow( &quot;MiniAppClass&quot;,
      &quot;Mini Application&quot;,
      WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,
      0,
      0,
      CW_USEDEFAULT,
      CW_USEDEFAULT,
      NULL,
      NULL,
      hInstance,
      NULL
   );

   ShowWindow( hWnd, nCmdShow );
   UpdateWindow(hWnd);
   while( GetMessage( &amp;msg, NULL, 0, 0 ) ) {
      TranslateMessage( &amp;msg );
      DispatchMessage( &amp;msg );
   }
   return msg.wParam;
}

LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam,
   LPARAM lParam )
{
   PAINTSTRUCT ps;
   HDC hDC;

   static char buffer[200];
   static int count=0;
   int y;

   switch( msg ) {

/**************************************************************\
*     WM_PAINT:                                                *
\**************************************************************/
   case WM_PAINT:{
					count++;

					y=sprintf(buffer,&quot;Anzahl: %d\n&quot;,count);

					OutputDebugString(&quot;WM_PAINT\n&quot;);
					hDC = BeginPaint( hWnd, &amp;ps );

					TextOut( hDC, 10, 10, buffer, y -1 );

					EndPaint( hWnd, &amp;ps );
				 }
         break;

/**************************************************************\
*     WM_DESTROY: PostQuitMessage() is called                  *
\**************************************************************/
      case WM_DESTROY:
		  OutputDebugString(&quot;WM_DESTROY\n&quot;);
         PostQuitMessage( 0 );
         break;

/**************************************************************\
*     Let the default window proc handle all other messages    *
\**************************************************************/
      default:
         return( DefWindowProc( hWnd, msg, wParam, lParam ));
   }
   return 0;
}
</code></pre>
<p>in WM_PAINT hab ich die ausgabe drinnen, es ist einfach nur ein Counter der incrementiert wird wenn man das fenster vergrößert oder verkleinert.</p>
<p>Wenn ich nun aber mehrere Instanzen davon erzeuge wird doch der wert in alle instanzen übernommen oder nicht?</p>
<p>wie bekomme ich die instanzierung hin so das jedes Fenster die gleichen variablen für sich hat?</p>
<p>Bin über jeden Hinweis, der zur Problemlösung oder zur Richtungsweisung beiträgt dankbar.</p>
<p>mfg<br />
Snoop</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/105258/reaktion-auf-mausklick-instanzierung-von-fenstern</link><generator>RSS for Node</generator><lastBuildDate>Sat, 02 May 2026 06:35:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/105258.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Mar 2005 15:33:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Reaktion auf Mausklick + instanzierung von Fenstern on Mon, 28 Mar 2005 15:33:17 GMT]]></title><description><![CDATA[<p>ich möchte wenn ich auf das erstellte frame klicke ein 2tes Frame öffnen der gleichen instanz und dabei die ausgabe von werten innerhalb dieser frames trennen.</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;

LRESULT WINAPI MainWndProc( HWND, UINT, WPARAM, LPARAM );

/*******************  Global Variables ********************/

int PASCAL WinMain( HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpszCmdLine,
    int nCmdShow )
{
   WNDCLASS wc;
   MSG msg;
   HWND hWnd;

   if( !hPrevInstance )
   {
      wc.lpszClassName = &quot;MiniAppClass&quot;;
      wc.lpfnWndProc = MainWndProc;
      wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
      wc.hInstance = hInstance;
      wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
      wc.hCursor = LoadCursor( NULL, IDC_ARROW );
      wc.hbrBackground = (HBRUSH)( COLOR_WINDOW+1 );

      wc.lpszMenuName = NULL;
      wc.cbClsExtra = 0;
      wc.cbWndExtra = 0;

      RegisterClass( &amp;wc );
   }

   hWnd = CreateWindow( &quot;MiniAppClass&quot;,
      &quot;Mini Application&quot;,
      WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,
      0,
      0,
      CW_USEDEFAULT,
      CW_USEDEFAULT,
      NULL,
      NULL,
      hInstance,
      NULL
   );

   ShowWindow( hWnd, nCmdShow );
   UpdateWindow(hWnd);
   while( GetMessage( &amp;msg, NULL, 0, 0 ) ) {
      TranslateMessage( &amp;msg );
      DispatchMessage( &amp;msg );
   }
   return msg.wParam;
}

LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam,
   LPARAM lParam )
{
   PAINTSTRUCT ps;
   HDC hDC;

   static char buffer[200];
   static int count=0;
   int y;

   switch( msg ) {

/**************************************************************\
*     WM_PAINT:                                                *
\**************************************************************/
   case WM_PAINT:{
					count++;

					y=sprintf(buffer,&quot;Anzahl: %d\n&quot;,count);

					OutputDebugString(&quot;WM_PAINT\n&quot;);
					hDC = BeginPaint( hWnd, &amp;ps );

					TextOut( hDC, 10, 10, buffer, y -1 );

					EndPaint( hWnd, &amp;ps );
				 }
         break;

/**************************************************************\
*     WM_DESTROY: PostQuitMessage() is called                  *
\**************************************************************/
      case WM_DESTROY:
		  OutputDebugString(&quot;WM_DESTROY\n&quot;);
         PostQuitMessage( 0 );
         break;

/**************************************************************\
*     Let the default window proc handle all other messages    *
\**************************************************************/
      default:
         return( DefWindowProc( hWnd, msg, wParam, lParam ));
   }
   return 0;
}
</code></pre>
<p>in WM_PAINT hab ich die ausgabe drinnen, es ist einfach nur ein Counter der incrementiert wird wenn man das fenster vergrößert oder verkleinert.</p>
<p>Wenn ich nun aber mehrere Instanzen davon erzeuge wird doch der wert in alle instanzen übernommen oder nicht?</p>
<p>wie bekomme ich die instanzierung hin so das jedes Fenster die gleichen variablen für sich hat?</p>
<p>Bin über jeden Hinweis, der zur Problemlösung oder zur Richtungsweisung beiträgt dankbar.</p>
<p>mfg<br />
Snoop</p>
]]></description><link>https://www.c-plusplus.net/forum/post/754231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/754231</guid><dc:creator><![CDATA[McSnoop]]></dc:creator><pubDate>Mon, 28 Mar 2005 15:33:17 GMT</pubDate></item><item><title><![CDATA[Reply to Reaktion auf Mausklick + instanzierung von Fenstern on Mon, 28 Mar 2005 16:21:17 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>nutze wc.cbWndExtra = ???; !!!</p>
<p>- definiere eine struktur mit alle benötigten Variablen<br />
- setze wc.cbWndExtra = sizeof(ZeigerAufStruktur)<br />
- erzeuge zwei globale Instanzen dieser Struktur<br />
- übergebe einen Zeiger auf eine Struktur bei CreateWindow als letzten Parameter ( LPVOID lpParam // pointer to window-creation data )<br />
- sichere den Zeiger bei WM_CREATE:<br />
lpcs = (LPCREATESTRUCT) lParam;<br />
lpcs-&gt;lpCreateParams // das ist Dein Zeiger</p>
<p>mit SetWindowLong(hWnd, GWL_USERDATA, (LONG) lpcs-&gt;lpCreateParams);</p>
<p>- Verwende immer wenn Du auf die Daten zugreifen möchtest<br />
z = (MeinZeiger*) GetWindowLong(hWnd, GWL_USERDATA);</p>
<p>Alternativ kannst Du auch Speicher bei WM_CREATE holen den Inhalt des Zeigers kopieren, und den neuen Zeiger mit SetClassLong sichern. So brauchts Du nur ein<br />
lokale Instanz der Struktur beim erstellen eines neuen Fensters.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/754277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/754277</guid><dc:creator><![CDATA[RED-BARON]]></dc:creator><pubDate>Mon, 28 Mar 2005 16:21:17 GMT</pubDate></item><item><title><![CDATA[Reply to Reaktion auf Mausklick + instanzierung von Fenstern on Mon, 28 Mar 2005 16:20:56 GMT]]></title><description><![CDATA[<p>Uff,</p>
<p>THX erstmal ich werde versuchen das umzusetzen, wenn noch fragen auftreten werden frag ich nochmal <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/754280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/754280</guid><dc:creator><![CDATA[McSnoop]]></dc:creator><pubDate>Mon, 28 Mar 2005 16:20:56 GMT</pubDate></item><item><title><![CDATA[Reply to Reaktion auf Mausklick + instanzierung von Fenstern on Mon, 28 Mar 2005 16:28:59 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>beachte ich habe gerade den Beitrag editiert,</p>
<p>NICHT SetClassLong SONDERN SetWindowLong ist die richtige Funktion.</p>
<p>Die Ideed dahinter ist praktisch nur einen Zeiger an das Fenster[Handle] zu &quot;binden&quot;. Der Platz (praktisch Zeigervariable) für den Zeiger wird von Windows bereitgestellt, wie viel Platz benötigt wird legt man bei füllen der wc<br />
fest.</p>
<p>So hat jedes Fenster die Möglickkeit unabhängig von globalen Variablen und gleicher Fensterprozedur seine eigenen Daten zu halten.</p>
<p>Eine andere Möglickeit ist wohl SetProp und GetProp zu verwenden.<br />
Schau Dir auch mal diese Funktionen an.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/754285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/754285</guid><dc:creator><![CDATA[RED-BARON]]></dc:creator><pubDate>Mon, 28 Mar 2005 16:28:59 GMT</pubDate></item><item><title><![CDATA[Reply to Reaktion auf Mausklick + instanzierung von Fenstern on Mon, 28 Mar 2005 16:42:22 GMT]]></title><description><![CDATA[<p>RED-BARON schrieb:</p>
<blockquote>
<p>hallo</p>
<p>nutze wc.cbWndExtra = ???; !!!<br />
- definiere eine struktur mit alle benötigten Variablen<br />
- setze wc.cbWndExtra = sizeof(ZeigerAufStruktur)</p>
</blockquote>
<p>wenn ich nur einen Wert speichern möchte reicht es doch aus wenn ich<br />
wc.cbWndExtra = sizeof(long); schreibe oder?</p>
<p>RED-BARON schrieb:</p>
<blockquote>
<p>- erzeuge zwei globale Instanzen dieser Struktur</p>
</blockquote>
<p>warum 2 globale instanzen? werden dann nicht auch 2 fenster gezeichnet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/754295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/754295</guid><dc:creator><![CDATA[McSnoop]]></dc:creator><pubDate>Mon, 28 Mar 2005 16:42:22 GMT</pubDate></item><item><title><![CDATA[Reply to Reaktion auf Mausklick + instanzierung von Fenstern on Mon, 28 Mar 2005 17:41:41 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>nicht 2 Instanzen von WNDCALSS sondern 2 Instanzen Deiner eigenen Struktur.</p>
<p>Wenn Du nur einen long-Wert Speichern willst brauchts Du natürlich keine<br />
Struktur dafür definieren<br />
wc.cbWndExtra = sizeof(long);<br />
ist in dem Fall schon richtig</p>
<blockquote>
<p>warum 2 globale instanzen? werden dann nicht auch 2 fenster gezeichnet?</p>
</blockquote>
<p>Ich bin davon ausgegangen, daß Du 2 Fenster erstellen willst oder nicht (?),<br />
hat aber nichts mit den Strukturen zu tun.<br />
Beide Fenster sollen jedoch die gleiche WndProc verwenden aber ihre eigenen Daten haben, so habe ich das aufgefaßt.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/754342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/754342</guid><dc:creator><![CDATA[RED-BARON]]></dc:creator><pubDate>Mon, 28 Mar 2005 17:41:41 GMT</pubDate></item><item><title><![CDATA[Reply to Reaktion auf Mausklick + instanzierung von Fenstern on Mon, 28 Mar 2005 18:26:57 GMT]]></title><description><![CDATA[<p>RED-BARON schrieb:</p>
<blockquote>
<p>hallo<br />
Ich bin davon ausgegangen, daß Du 2 Fenster erstellen willst oder nicht (?),<br />
hat aber nichts mit den Strukturen zu tun.<br />
Beide Fenster sollen jedoch die gleiche WndProc verwenden aber ihre eigenen Daten haben, so habe ich das aufgefaßt.<br />
mfg</p>
</blockquote>
<p>doch 2 fenster sollen es schon werden, eigentlich soll immer ein neues fenster der gleich instanz erzeugt werden wenn man in das fenster klickt, aber halt der zähler der die ereignisse zählt soll halt nur die zu dem entsprechenden fenster zugehörigen veränderungen zählen.</p>
<p>greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/754381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/754381</guid><dc:creator><![CDATA[McSnoop]]></dc:creator><pubDate>Mon, 28 Mar 2005 18:26:57 GMT</pubDate></item><item><title><![CDATA[Reply to Reaktion auf Mausklick + instanzierung von Fenstern on Mon, 28 Mar 2005 18:31:51 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>dann bist Du mit dem aufgezeigten Ansatz auf dem richtige Weg ...<br />
So werden ansich auch Controls erstellt, alle habe die geliche WndProc<br />
aber unterschiedliche eigene Daten. Bezeiht sich auf Ctrls gelichen Typs<br />
natürlich nur <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>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/754386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/754386</guid><dc:creator><![CDATA[RED-BARON]]></dc:creator><pubDate>Mon, 28 Mar 2005 18:31:51 GMT</pubDate></item></channel></rss>