<?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[fehler im WinAPI code? hmm komisch komisch...]]></title><description><![CDATA[<p>Hi,<br />
ich habe leider ein Problem in meinem Programm. Und zwar tritt nach genau 25 sekunden ein bug auf^^... Naja hab mal nen Timer laufen lassen um rauszufinden ob das immer zur selben Zeit ist.<br />
Also der Fehler ist das mein Fenster auf mysteriöse Art und Weise maximiert wird.... -.- Dabei verlieren die Objekte ihre Farbe und das Programm laagt wie sau..</p>
<p>naja hier mal der Quellcode falls ihr da was drin findet..bitte helfen ..</p>
<pre><code class="language-cpp">#define STRICT
#include &lt;math.h&gt;
#include &lt;windows.h&gt;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

#define ID_TIMER_REFRESH_UNTEN 1
#define ID_TIMER_REFRESH_BALL 2
#define OBEN ballY   -= speed
#define UNTEN ballY  += speed
#define LINKS ballX  -= speed
#define RECHTS ballX += speed

int iBreiteLinksUnten = 55,   iBreiteRechtsUnten  = 45;
int iBreiteLinksBall  = 10,   iBreiteRechtsBall   = 10;
int ballX   = 400,   ballY    = 300;
int paddleX = 400,   paddleY  = 570;
int merker  = 0,     i        = 0;
int speed   = 3;

const char szAppName[]    = &quot;BreakOut&quot;;

int WINAPI WinMain(  HINSTANCE hInstance, HINSTANCE hPrevInstance,

{
   HWND       hWnd;
   MSG        msg;
   WNDCLASS   wc;

   wc.style               = CS_HREDRAW | CS_VREDRAW;
   wc.lpfnWndProc         = WndProc;
   wc.cbClsExtra          = 0;
   wc.cbWndExtra          = 0;
   wc.hInstance           = hInstance;
   wc.hCursor             = LoadCursor(NULL, IDC_ARROW);
   wc.hIcon               = LoadIcon(NULL, IDI_APPLICATION);
   wc.hbrBackground       = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
   wc.lpszClassName       = szAppName;
   wc.lpszMenuName        = NULL;

   RegisterClass(&amp;wc);

   hWnd = CreateWindow(   szAppName,
                          szAppName,
                          WS_OVERLAPPED | WS_SYSMENU,
                          100,
                          100,
                          800,
                          600,
                          NULL,
                          NULL,
                          hInstance,
                          NULL);

   ShowWindow(hWnd, iCmdShow);
   UpdateWindow(hWnd);

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

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

   static RECT rect;

   switch (message)
   {
      case WM_CREATE:
      {
         SetTimer(hWnd,ID_TIMER_REFRESH_UNTEN,1,NULL);
         SetTimer(hWnd,ID_TIMER_REFRESH_BALL,1,NULL);
         return 0;
      }

      case WM_SIZE:
      {
         rect.right = LOWORD(lParam);
         rect.bottom = HIWORD(lParam);
         return 0;
      }

      case WM_PAINT:
      {
         PAINTSTRUCT ps;
         HDC   hDC;

         hDC = BeginPaint(hWnd, &amp;ps);
         {
            HBRUSH hOldBrush = (HBRUSH)SelectObject(hDC,
                              CreateSolidBrush(RGB(0,0,0)));

            RoundRect(hDC, paddleX - iBreiteLinksUnten, paddleY  - 10,
                           paddleX + iBreiteRechtsUnten, paddleY + 10, 10, 10);

            RoundRect(hDC, ballX - iBreiteLinksBall, ballY -10,
                      ballX + iBreiteRechtsBall, ballY +10, 1000, 1000);

            DeleteObject(SelectObject(hDC,hOldBrush));
            return 0;

         }
         EndPaint(hWnd, &amp;ps);
      return 0;
      }

      case WM_TIMER:
      {
         switch(wParam)
         {
            case ID_TIMER_REFRESH_UNTEN:
            {
               RECT untenrect;

               untenrect.right   = rect.right;
               untenrect.bottom  = rect.bottom + 50;
               untenrect.left    = rect.left;
               untenrect.top     = rect.top +450;

               InvalidateRect(hWnd, &amp;untenrect, TRUE);
               break;
            }

           case ID_TIMER_REFRESH_BALL:
            {
               RECT ballRect;

               ballRect.right    =  ballX + 15;
               ballRect.bottom   =  ballY - 15;
               ballRect.left     =  ballX - 15;
               ballRect.top      =  ballY + 15;

               if(i==0) //START
               {
                  UNTEN;

                  if(ballY&gt;=550)
                  {
                     i=1;
                     merker=0;
                  }

               }
               if(i==1) //UNTEN
               {
                  if(merker==0)   //ball vom start
                  {
                     RECHTS;OBEN;
                  }
                  if(merker==2)   //ball von links
                  {
                    RECHTS;OBEN;
                  }
                  if(merker==3)   //ball von rechts
                  {
                     LINKS;OBEN;
                  }
                  if(merker==4)   //ball von oben
                  {
                     RECHTS;OBEN;
                  }

                     if(ballX&lt;=10)
                     {
                        i=2;
                        merker=1;
                     }
                     if(ballX&gt;=780)
                     {
                        i=3;
                        merker=1;
                     }
                     if(ballY&lt;=10)
                     {
                        i=4;
                        merker=1;
                     }
               }
               if(i==2) //LINKS
               {

                  if(merker==1)   //ball von unten
                  {
                     OBEN;RECHTS;
                  }
                  if(merker==3)   //ball von rechts
                  {
                     UNTEN;LINKS;
                  }
                  if(merker==4)   //ball von oben
                  {
                    UNTEN;RECHTS;
                  }

                     if(ballY&gt;=550)
                     {
                        i=1;
                        merker=2;
                     }
                     if(ballX&gt;=780)
                     {
                        i=3;
                        merker=2;
                     }
                     if(ballY&lt;=10)
                     {
                        i=4;
                        merker=2;
                     }
               }
               if(i==3) //RECHTS
               {

                  if(merker==1)   //ball von unten
                  {
                     OBEN;LINKS;
                  }
                  if(merker==2)   //ball von links
                  {
                     UNTEN;RECHTS;
                  }
                  if(merker==4)   //ball von oben
                  {
                     LINKS;UNTEN;
                  }

                     if(ballY&gt;=550)
                     {
                        i=1;
                        merker=3;
                     }
                     if(ballX&lt;=10)
                     {
                        i=2;
                        merker=3;
                     }
                     if(ballY&lt;=10)
                     {
                        i=4;
                        merker=3;
                     }
               }
               if(i==4) //OBEN
               {

                  if(merker==1)   //ball von unten
                  {
                     RECHTS;UNTEN;
                  }
                  if(merker==2)   //ball von links
                  {
                     UNTEN;RECHTS;
                  }
                  if(merker==3)   //ball von rechts
                  {
                     LINKS;UNTEN;
                  }

                     if(ballY&gt;=550)
                     {
                        i=1;
                        merker=4;
                     }
                     if(ballX&lt;=10)
                     {
                        i=2;
                        merker=4;
                     }
                     if(ballX&gt;=780)
                     {
                        i=3;
                        merker=4;
                     }
               }

               InvalidateRect(hWnd,&amp;ballRect,TRUE);
               break;
            }
         }
      }

      case WM_KEYDOWN:
      {
         switch(wParam)
         {
            case VK_ESCAPE:
            {
               SendMessage(hWnd,WM_CLOSE,0,0);
               return 0;
            }
            case VK_LEFT:
            {
               if(iBreiteLinksUnten&lt;=380)
               {
                  iBreiteRechtsUnten -= 20;
                  iBreiteLinksUnten += 20;
               }
               return 0;
            }
            case VK_RIGHT:
            {
               if(iBreiteRechtsUnten&lt;=380)
               {
                  iBreiteRechtsUnten += 20;
                  iBreiteLinksUnten -= 20;
               }
               return 0;
            }
            default:
            return 0;
         }
      }

      case WM_DESTROY:
      {
         KillTimer(hWnd,ID_TIMER_REFRESH_UNTEN);
         KillTimer(hWnd,ID_TIMER_REFRESH_BALL);
         PostQuitMessage(0);
         return 0;
      }
   }
   return DefWindowProc(hWnd, message, wParam, lParam);
}
</code></pre>
<p>Ich hoffe der ist nicht zu lang^^. Naja ist auch leider ohne Kommentare...</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159472/fehler-im-winapi-code-hmm-komisch-komisch</link><generator>RSS for Node</generator><lastBuildDate>Mon, 20 Jul 2026 09:39:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159472.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Sep 2006 12:56:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fehler im WinAPI code? hmm komisch komisch... on Fri, 15 Sep 2006 12:56:42 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich habe leider ein Problem in meinem Programm. Und zwar tritt nach genau 25 sekunden ein bug auf^^... Naja hab mal nen Timer laufen lassen um rauszufinden ob das immer zur selben Zeit ist.<br />
Also der Fehler ist das mein Fenster auf mysteriöse Art und Weise maximiert wird.... -.- Dabei verlieren die Objekte ihre Farbe und das Programm laagt wie sau..</p>
<p>naja hier mal der Quellcode falls ihr da was drin findet..bitte helfen ..</p>
<pre><code class="language-cpp">#define STRICT
#include &lt;math.h&gt;
#include &lt;windows.h&gt;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

#define ID_TIMER_REFRESH_UNTEN 1
#define ID_TIMER_REFRESH_BALL 2
#define OBEN ballY   -= speed
#define UNTEN ballY  += speed
#define LINKS ballX  -= speed
#define RECHTS ballX += speed

int iBreiteLinksUnten = 55,   iBreiteRechtsUnten  = 45;
int iBreiteLinksBall  = 10,   iBreiteRechtsBall   = 10;
int ballX   = 400,   ballY    = 300;
int paddleX = 400,   paddleY  = 570;
int merker  = 0,     i        = 0;
int speed   = 3;

const char szAppName[]    = &quot;BreakOut&quot;;

int WINAPI WinMain(  HINSTANCE hInstance, HINSTANCE hPrevInstance,

{
   HWND       hWnd;
   MSG        msg;
   WNDCLASS   wc;

   wc.style               = CS_HREDRAW | CS_VREDRAW;
   wc.lpfnWndProc         = WndProc;
   wc.cbClsExtra          = 0;
   wc.cbWndExtra          = 0;
   wc.hInstance           = hInstance;
   wc.hCursor             = LoadCursor(NULL, IDC_ARROW);
   wc.hIcon               = LoadIcon(NULL, IDI_APPLICATION);
   wc.hbrBackground       = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
   wc.lpszClassName       = szAppName;
   wc.lpszMenuName        = NULL;

   RegisterClass(&amp;wc);

   hWnd = CreateWindow(   szAppName,
                          szAppName,
                          WS_OVERLAPPED | WS_SYSMENU,
                          100,
                          100,
                          800,
                          600,
                          NULL,
                          NULL,
                          hInstance,
                          NULL);

   ShowWindow(hWnd, iCmdShow);
   UpdateWindow(hWnd);

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

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

   static RECT rect;

   switch (message)
   {
      case WM_CREATE:
      {
         SetTimer(hWnd,ID_TIMER_REFRESH_UNTEN,1,NULL);
         SetTimer(hWnd,ID_TIMER_REFRESH_BALL,1,NULL);
         return 0;
      }

      case WM_SIZE:
      {
         rect.right = LOWORD(lParam);
         rect.bottom = HIWORD(lParam);
         return 0;
      }

      case WM_PAINT:
      {
         PAINTSTRUCT ps;
         HDC   hDC;

         hDC = BeginPaint(hWnd, &amp;ps);
         {
            HBRUSH hOldBrush = (HBRUSH)SelectObject(hDC,
                              CreateSolidBrush(RGB(0,0,0)));

            RoundRect(hDC, paddleX - iBreiteLinksUnten, paddleY  - 10,
                           paddleX + iBreiteRechtsUnten, paddleY + 10, 10, 10);

            RoundRect(hDC, ballX - iBreiteLinksBall, ballY -10,
                      ballX + iBreiteRechtsBall, ballY +10, 1000, 1000);

            DeleteObject(SelectObject(hDC,hOldBrush));
            return 0;

         }
         EndPaint(hWnd, &amp;ps);
      return 0;
      }

      case WM_TIMER:
      {
         switch(wParam)
         {
            case ID_TIMER_REFRESH_UNTEN:
            {
               RECT untenrect;

               untenrect.right   = rect.right;
               untenrect.bottom  = rect.bottom + 50;
               untenrect.left    = rect.left;
               untenrect.top     = rect.top +450;

               InvalidateRect(hWnd, &amp;untenrect, TRUE);
               break;
            }

           case ID_TIMER_REFRESH_BALL:
            {
               RECT ballRect;

               ballRect.right    =  ballX + 15;
               ballRect.bottom   =  ballY - 15;
               ballRect.left     =  ballX - 15;
               ballRect.top      =  ballY + 15;

               if(i==0) //START
               {
                  UNTEN;

                  if(ballY&gt;=550)
                  {
                     i=1;
                     merker=0;
                  }

               }
               if(i==1) //UNTEN
               {
                  if(merker==0)   //ball vom start
                  {
                     RECHTS;OBEN;
                  }
                  if(merker==2)   //ball von links
                  {
                    RECHTS;OBEN;
                  }
                  if(merker==3)   //ball von rechts
                  {
                     LINKS;OBEN;
                  }
                  if(merker==4)   //ball von oben
                  {
                     RECHTS;OBEN;
                  }

                     if(ballX&lt;=10)
                     {
                        i=2;
                        merker=1;
                     }
                     if(ballX&gt;=780)
                     {
                        i=3;
                        merker=1;
                     }
                     if(ballY&lt;=10)
                     {
                        i=4;
                        merker=1;
                     }
               }
               if(i==2) //LINKS
               {

                  if(merker==1)   //ball von unten
                  {
                     OBEN;RECHTS;
                  }
                  if(merker==3)   //ball von rechts
                  {
                     UNTEN;LINKS;
                  }
                  if(merker==4)   //ball von oben
                  {
                    UNTEN;RECHTS;
                  }

                     if(ballY&gt;=550)
                     {
                        i=1;
                        merker=2;
                     }
                     if(ballX&gt;=780)
                     {
                        i=3;
                        merker=2;
                     }
                     if(ballY&lt;=10)
                     {
                        i=4;
                        merker=2;
                     }
               }
               if(i==3) //RECHTS
               {

                  if(merker==1)   //ball von unten
                  {
                     OBEN;LINKS;
                  }
                  if(merker==2)   //ball von links
                  {
                     UNTEN;RECHTS;
                  }
                  if(merker==4)   //ball von oben
                  {
                     LINKS;UNTEN;
                  }

                     if(ballY&gt;=550)
                     {
                        i=1;
                        merker=3;
                     }
                     if(ballX&lt;=10)
                     {
                        i=2;
                        merker=3;
                     }
                     if(ballY&lt;=10)
                     {
                        i=4;
                        merker=3;
                     }
               }
               if(i==4) //OBEN
               {

                  if(merker==1)   //ball von unten
                  {
                     RECHTS;UNTEN;
                  }
                  if(merker==2)   //ball von links
                  {
                     UNTEN;RECHTS;
                  }
                  if(merker==3)   //ball von rechts
                  {
                     LINKS;UNTEN;
                  }

                     if(ballY&gt;=550)
                     {
                        i=1;
                        merker=4;
                     }
                     if(ballX&lt;=10)
                     {
                        i=2;
                        merker=4;
                     }
                     if(ballX&gt;=780)
                     {
                        i=3;
                        merker=4;
                     }
               }

               InvalidateRect(hWnd,&amp;ballRect,TRUE);
               break;
            }
         }
      }

      case WM_KEYDOWN:
      {
         switch(wParam)
         {
            case VK_ESCAPE:
            {
               SendMessage(hWnd,WM_CLOSE,0,0);
               return 0;
            }
            case VK_LEFT:
            {
               if(iBreiteLinksUnten&lt;=380)
               {
                  iBreiteRechtsUnten -= 20;
                  iBreiteLinksUnten += 20;
               }
               return 0;
            }
            case VK_RIGHT:
            {
               if(iBreiteRechtsUnten&lt;=380)
               {
                  iBreiteRechtsUnten += 20;
                  iBreiteLinksUnten -= 20;
               }
               return 0;
            }
            default:
            return 0;
         }
      }

      case WM_DESTROY:
      {
         KillTimer(hWnd,ID_TIMER_REFRESH_UNTEN);
         KillTimer(hWnd,ID_TIMER_REFRESH_BALL);
         PostQuitMessage(0);
         return 0;
      }
   }
   return DefWindowProc(hWnd, message, wParam, lParam);
}
</code></pre>
<p>Ich hoffe der ist nicht zu lang^^. Naja ist auch leider ohne Kommentare...</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137953</guid><dc:creator><![CDATA[S*l*ayer]]></dc:creator><pubDate>Fri, 15 Sep 2006 12:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to fehler im WinAPI code? hmm komisch komisch... on Fri, 15 Sep 2006 13:42:07 GMT]]></title><description><![CDATA[<blockquote>
<pre><code>return 0;

         }
         EndPaint(hWnd, &amp;ps);
</code></pre>
</blockquote>
<p>Resource leak: EndPaint wird niemals aufgerufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137979</guid><dc:creator><![CDATA[_mgs]]></dc:creator><pubDate>Fri, 15 Sep 2006 13:42:07 GMT</pubDate></item><item><title><![CDATA[Reply to fehler im WinAPI code? hmm komisch komisch... on Fri, 15 Sep 2006 21:43:10 GMT]]></title><description><![CDATA[<p>cool, danke!<br />
aber was ich nicht versteh ist, warum das immer nach 25 secunden passiert..?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138234</guid><dc:creator><![CDATA[S*l*ayer]]></dc:creator><pubDate>Fri, 15 Sep 2006 21:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to fehler im WinAPI code? hmm komisch komisch... on Sat, 16 Sep 2006 09:10:20 GMT]]></title><description><![CDATA[<p>Weil das Leck so lange braucht, bis es Wirkung zeigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138334</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sat, 16 Sep 2006 09:10:20 GMT</pubDate></item><item><title><![CDATA[Reply to fehler im WinAPI code? hmm komisch komisch... on Sat, 16 Sep 2006 10:56:12 GMT]]></title><description><![CDATA[<p>Wenn du dir einen Mega PC anschaffst schaffste evt. aus den 25 sec 3-4 minuten rauszuholen <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/1138399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138399</guid><dc:creator><![CDATA[blub32]]></dc:creator><pubDate>Sat, 16 Sep 2006 10:56:12 GMT</pubDate></item><item><title><![CDATA[Reply to fehler im WinAPI code? hmm komisch komisch... on Sat, 16 Sep 2006 11:42:27 GMT]]></title><description><![CDATA[<p>blub32 schrieb:</p>
<blockquote>
<p>Wenn du dir einen Mega PC anschaffst schaffste evt. aus den 25 sec 3-4 minuten rauszuholen <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>
</blockquote>
<p>Nein, schafft er nicht, da die Anzahl der maximal verfügbaren GDI-Handles pro Prozess begrenzt ist. Der Timer lässt die Liste auch auf einem Mega-PC genau so schnell voll laufen (16 KHandles insgesamt, für einen einzigen Prozess daraus nicht mehr als 12 KHandles).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138421</guid><dc:creator><![CDATA[Gästchen]]></dc:creator><pubDate>Sat, 16 Sep 2006 11:42:27 GMT</pubDate></item><item><title><![CDATA[Reply to fehler im WinAPI code? hmm komisch komisch... on Sun, 17 Sep 2006 17:09:22 GMT]]></title><description><![CDATA[<p>aso danke, gut zu wissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139110</guid><dc:creator><![CDATA[S*l*ayer]]></dc:creator><pubDate>Sun, 17 Sep 2006 17:09:22 GMT</pubDate></item></channel></rss>