<?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[GWL_USERDATA]]></title><description><![CDATA[<p>Hi,</p>
<p>ich verzweifle noch.... ich bekomme immer den &quot;Debug Fehler 3&quot;<br />
was ist hier faul ???</p>
<pre><code>class gui_window_class
{
 protected:
   static LRESULT CALLBACK win32_static_on_event (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
   LRESULT CALLBACK win32_on_event (UINT uMsg, WPARAM wParam, LPARAM lParam);

 public:
   gui_window_class (void);
   ~gui_window_class ();

   void install (void);

   HWND hWnd;
};

void gui_window_class :: install ()
{
// .....

      if (!CreateWindow (win_class_name, '\0', dwStyle, Left, Top, Width, Height, hParent, NULL, hInstance, (void *)this))
      {
         MessageBox(NULL, TEXT (&quot;Failed to create the window.&quot;), TEXT (&quot;Error&quot;), MB_OK | MB_ICONEXCLAMATION);
      }
}

LRESULT CALLBACK gui_window_class :: win32_static_on_event (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   gui_window_class* wnd = NULL;

   if(uMsg == WM_CREATE) 
   {
      LPCREATESTRUCT cs = (LPCREATESTRUCT)(lParam); 
      if(!cs-&gt;lpCreateParams) MessageBox(NULL, TEXT (&quot;Debug Fehler 1&quot;), TEXT (&quot;Error&quot;), MB_OK | MB_ICONEXCLAMATION);
      else SetWindowLong(hWnd, GWL_USERDATA, (long)(cs-&gt;lpCreateParams));

      wnd = (gui_window_class *)(cs-&gt;lpCreateParams);
      if(!wnd) MessageBox(NULL, TEXT (&quot;Debug Fehler 2&quot;), TEXT (&quot;Error&quot;), MB_OK | MB_ICONEXCLAMATION);
      else wnd-&gt;hWnd = hWnd;
   }
   else
   {
      wnd = (gui_window_class *)(GetWindowLong(hWnd, GWL_USERDATA));
      if (!wnd) MessageBox(NULL, TEXT (&quot;Debug Fehler 3&quot;), TEXT (&quot;Error&quot;), MB_OK | MB_ICONEXCLAMATION);
   }

   if (wnd) return wnd-&gt;win32_on_event(uMsg, wParam, lParam);
   else return 0L; // I think, is it right ????????????
}

LRESULT CALLBACK gui_window_class :: win32_on_event (UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   switch (uMsg)
   {
      case WM_CLOSE:
      {
         PostQuitMessage(0);
         return 0L;
      }
      default:
      {
         return DefWindowProc (this-&gt;hWnd, uMsg, wParam, lParam);
      }
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/133444/gwl_userdata</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 17:27:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/133444.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Jan 2006 20:07:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to GWL_USERDATA on Tue, 17 Jan 2006 20:07:48 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich verzweifle noch.... ich bekomme immer den &quot;Debug Fehler 3&quot;<br />
was ist hier faul ???</p>
<pre><code>class gui_window_class
{
 protected:
   static LRESULT CALLBACK win32_static_on_event (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
   LRESULT CALLBACK win32_on_event (UINT uMsg, WPARAM wParam, LPARAM lParam);

 public:
   gui_window_class (void);
   ~gui_window_class ();

   void install (void);

   HWND hWnd;
};

void gui_window_class :: install ()
{
// .....

      if (!CreateWindow (win_class_name, '\0', dwStyle, Left, Top, Width, Height, hParent, NULL, hInstance, (void *)this))
      {
         MessageBox(NULL, TEXT (&quot;Failed to create the window.&quot;), TEXT (&quot;Error&quot;), MB_OK | MB_ICONEXCLAMATION);
      }
}

LRESULT CALLBACK gui_window_class :: win32_static_on_event (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   gui_window_class* wnd = NULL;

   if(uMsg == WM_CREATE) 
   {
      LPCREATESTRUCT cs = (LPCREATESTRUCT)(lParam); 
      if(!cs-&gt;lpCreateParams) MessageBox(NULL, TEXT (&quot;Debug Fehler 1&quot;), TEXT (&quot;Error&quot;), MB_OK | MB_ICONEXCLAMATION);
      else SetWindowLong(hWnd, GWL_USERDATA, (long)(cs-&gt;lpCreateParams));

      wnd = (gui_window_class *)(cs-&gt;lpCreateParams);
      if(!wnd) MessageBox(NULL, TEXT (&quot;Debug Fehler 2&quot;), TEXT (&quot;Error&quot;), MB_OK | MB_ICONEXCLAMATION);
      else wnd-&gt;hWnd = hWnd;
   }
   else
   {
      wnd = (gui_window_class *)(GetWindowLong(hWnd, GWL_USERDATA));
      if (!wnd) MessageBox(NULL, TEXT (&quot;Debug Fehler 3&quot;), TEXT (&quot;Error&quot;), MB_OK | MB_ICONEXCLAMATION);
   }

   if (wnd) return wnd-&gt;win32_on_event(uMsg, wParam, lParam);
   else return 0L; // I think, is it right ????????????
}

LRESULT CALLBACK gui_window_class :: win32_on_event (UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   switch (uMsg)
   {
      case WM_CLOSE:
      {
         PostQuitMessage(0);
         return 0L;
      }
      default:
      {
         return DefWindowProc (this-&gt;hWnd, uMsg, wParam, lParam);
      }
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/969294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969294</guid><dc:creator><![CDATA[Schreck]]></dc:creator><pubDate>Tue, 17 Jan 2006 20:07:48 GMT</pubDate></item><item><title><![CDATA[Reply to GWL_USERDATA on Tue, 17 Jan 2006 21:07:38 GMT]]></title><description><![CDATA[<p>Bist Du sicher, dass Du auf das WM_CREATE mitbekommst???<br />
Die MFC macht das ganz schön miese Tricks damit das mit dem Subclassing noch funktioniert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969342</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Tue, 17 Jan 2006 21:07:38 GMT</pubDate></item></channel></rss>