<?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[geschweifte klammern]]></title><description><![CDATA[<p>hi<br />
ich bin ziemlich neu auf dem gebiet winapi(wirklich neu!)<br />
und benutz n tutorial im i-net (<a href="http://www.win-api.de/tutorials.php" rel="nofollow">http://www.win-api.de/tutorials.php</a>)<br />
da gibts ein prog, das linien zeichnet während man die linke maustaste gedrückt hält und wenn man die rechte taste drückt dann wird das fenster neu gelöscht.</p>
<p>hier mal kurz der quelltext:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

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

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   PSTR szCmdLine, int iCmdShow)
{
   HWND         hWnd;
   MSG          msg;
   WNDCLASS     wc;

   char         szAppName[] = &quot;Die Mouse&quot;;

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

   RegisterClass(&amp;wc);

   hWnd = CreateWindow(  szAppName,
                         szAppName,
                         WS_OVERLAPPEDWINDOW,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         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 POINT    point;

   switch (message)
   {
   case WM_CREATE:   
         point.x  = -1;
         point.y  = -1;
         return 0;     

   case WM_DESTROY:     
         PostQuitMessage(0);
         return 0;

   case WM_RBUTTONDOWN: 
         InvalidateRect(hWnd, NULL, TRUE);
         return 0;

   case WM_LBUTTONDOWN:
         {
           HDC  hDC = GetDC(hWnd);
           SetPixel(hDC, LOWORD(lParam), HIWORD(lParam), RGB(0, 0, 255));
           ReleaseDC(hWnd, hDC);

           point.x  = LOWORD(lParam);
           point.y  = HIWORD(lParam);
           return 0;
         }

   case WM_LBUTTONUP:
         if (point.x != -1)
         {
            HDC   hDC = GetDC(hWnd);
            MoveToEx(hDC, point.x, point.y, NULL);
            LineTo(hDC, LOWORD(lParam), HIWORD(lParam));
            ReleaseDC(hWnd, hDC);

            point.x   = -1;
            point.y   = -1;
         }
         return 0;

   } 
   return DefWindowProc(hWnd, message, wParam, lParam);
}
</code></pre>
<p>in dieser fassung funktioniert das compelieren bei mir (ich benutz Dev-C++)<br />
in anderen bücher über c++ hab ich aber gelernt, dass man bei &quot;case [..]:&quot; den nachfolgenen block nicht<br />
mit geschweiften klammern einklammern muss.<br />
bis jetzt hat auch alles so funktioniert.<br />
nur hier nicht!<br />
wenn ich bei</p>
<pre><code class="language-cpp">case WM_LBUTTONDOWN:           
   //keine klammer
   HDC  hDC = GetDC(hWnd);
   SetPixel(hDC, LOWORD(lParam), HIWORD(lParam), RGB(0, 0, 255));
   ReleaseDC(hWnd, hDC);

   point.x  = LOWORD(lParam);
   point.y  = HIWORD(lParam);
   return 0;
   //hier auch nicht
</code></pre>
<p>die klammern weglass, kommt folgene fehlermeldung:</p>
<p>jump to case label</p>
<p>(bei der ich auch nicht 100% weiß was sie bedeutet)</p>
<p>wenn ich wie beim prog oben die klammern nur an dieser stelle (bei den anderen case-stellen nicht)<br />
setzte funktioniert das prog wieder!</p>
<p>meine frage wäre jetzt<br />
1. was die fehlermeldung genauch heißt und<br />
2. warum das hier in diesem fall nicht funktioniert, wenn ich die klammern weglass!</p>
<p>thx im vorraus!</p>
<p>PS: wie gesagt:</p>
<blockquote>
<p>ich bin ziemlich neu auf dem gebiet winapi(wirklich neu!)</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/topic/191565/geschweifte-klammern</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 08:19:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191565.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Sep 2007 12:25:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to geschweifte klammern on Tue, 04 Sep 2007 12:25:40 GMT]]></title><description><![CDATA[<p>hi<br />
ich bin ziemlich neu auf dem gebiet winapi(wirklich neu!)<br />
und benutz n tutorial im i-net (<a href="http://www.win-api.de/tutorials.php" rel="nofollow">http://www.win-api.de/tutorials.php</a>)<br />
da gibts ein prog, das linien zeichnet während man die linke maustaste gedrückt hält und wenn man die rechte taste drückt dann wird das fenster neu gelöscht.</p>
<p>hier mal kurz der quelltext:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

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

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   PSTR szCmdLine, int iCmdShow)
{
   HWND         hWnd;
   MSG          msg;
   WNDCLASS     wc;

   char         szAppName[] = &quot;Die Mouse&quot;;

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

   RegisterClass(&amp;wc);

   hWnd = CreateWindow(  szAppName,
                         szAppName,
                         WS_OVERLAPPEDWINDOW,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         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 POINT    point;

   switch (message)
   {
   case WM_CREATE:   
         point.x  = -1;
         point.y  = -1;
         return 0;     

   case WM_DESTROY:     
         PostQuitMessage(0);
         return 0;

   case WM_RBUTTONDOWN: 
         InvalidateRect(hWnd, NULL, TRUE);
         return 0;

   case WM_LBUTTONDOWN:
         {
           HDC  hDC = GetDC(hWnd);
           SetPixel(hDC, LOWORD(lParam), HIWORD(lParam), RGB(0, 0, 255));
           ReleaseDC(hWnd, hDC);

           point.x  = LOWORD(lParam);
           point.y  = HIWORD(lParam);
           return 0;
         }

   case WM_LBUTTONUP:
         if (point.x != -1)
         {
            HDC   hDC = GetDC(hWnd);
            MoveToEx(hDC, point.x, point.y, NULL);
            LineTo(hDC, LOWORD(lParam), HIWORD(lParam));
            ReleaseDC(hWnd, hDC);

            point.x   = -1;
            point.y   = -1;
         }
         return 0;

   } 
   return DefWindowProc(hWnd, message, wParam, lParam);
}
</code></pre>
<p>in dieser fassung funktioniert das compelieren bei mir (ich benutz Dev-C++)<br />
in anderen bücher über c++ hab ich aber gelernt, dass man bei &quot;case [..]:&quot; den nachfolgenen block nicht<br />
mit geschweiften klammern einklammern muss.<br />
bis jetzt hat auch alles so funktioniert.<br />
nur hier nicht!<br />
wenn ich bei</p>
<pre><code class="language-cpp">case WM_LBUTTONDOWN:           
   //keine klammer
   HDC  hDC = GetDC(hWnd);
   SetPixel(hDC, LOWORD(lParam), HIWORD(lParam), RGB(0, 0, 255));
   ReleaseDC(hWnd, hDC);

   point.x  = LOWORD(lParam);
   point.y  = HIWORD(lParam);
   return 0;
   //hier auch nicht
</code></pre>
<p>die klammern weglass, kommt folgene fehlermeldung:</p>
<p>jump to case label</p>
<p>(bei der ich auch nicht 100% weiß was sie bedeutet)</p>
<p>wenn ich wie beim prog oben die klammern nur an dieser stelle (bei den anderen case-stellen nicht)<br />
setzte funktioniert das prog wieder!</p>
<p>meine frage wäre jetzt<br />
1. was die fehlermeldung genauch heißt und<br />
2. warum das hier in diesem fall nicht funktioniert, wenn ich die klammern weglass!</p>
<p>thx im vorraus!</p>
<p>PS: wie gesagt:</p>
<blockquote>
<p>ich bin ziemlich neu auf dem gebiet winapi(wirklich neu!)</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1358738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358738</guid><dc:creator><![CDATA[Disturbed]]></dc:creator><pubDate>Tue, 04 Sep 2007 12:25:40 GMT</pubDate></item><item><title><![CDATA[Reply to geschweifte klammern on Tue, 04 Sep 2007 13:14:51 GMT]]></title><description><![CDATA[<p>Merkwürdig, denn bei Borland muß man alle Case-Zweigen klammern.<br />
Ich würde mir an Deiner Stelle stets einheitliche Schreibweisen angewöhnen, auch, wenn die Konventionen nicht eindeutig festgelegt sind. Ich würde also auch bei WM_CREATE und WM_DESTROY und WM_LBUTTONDOWN Klammern setzen. Ist übersichtlicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358774</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Tue, 04 Sep 2007 13:14:51 GMT</pubDate></item><item><title><![CDATA[Reply to geschweifte klammern on Tue, 04 Sep 2007 13:45:44 GMT]]></title><description><![CDATA[<p>Man muß Case Zweige ned klammern, ist ja voll der Unfug. Wenn du Variablen neue Variablen am Anfang des Case Zweigs deklarierst musst du natürlich einen neuen Block mit { anfangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358800</guid><dc:creator><![CDATA[Lobster]]></dc:creator><pubDate>Tue, 04 Sep 2007 13:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to geschweifte klammern on Tue, 04 Sep 2007 13:47:05 GMT]]></title><description><![CDATA[<p>Disturbed schrieb:</p>
<blockquote>
<p>1. was die fehlermeldung genauch heißt und<br />
2. warum das hier in diesem fall nicht funktioniert, wenn ich die klammern weglass!</p>
</blockquote>
<p>Die heißt vollständig eigentlich sowas wie &quot;jump to case label bypasses definition (oder initialization?) of local variable&quot;. Bei dir würde beispielsweise case WM_LBUTTONUP die Definition von hDC, die dort noch sichtbar wäre!, überspringen.<br />
Deshalb sind hier Blöcke verwendet worden, um den Gültigkeitsbereich solcher Variablen zu begrenzen.</p>
<p>Elektronix schrieb:</p>
<blockquote>
<p>Merkwürdig, denn bei Borland muß man alle Case-Zweigen klammern.</p>
</blockquote>
<p>Das würde mich wundern, es wäre auch ein eklatanter Verstoß gegen den Sprachstandard.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358802</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 04 Sep 2007 13:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to geschweifte klammern on Tue, 04 Sep 2007 15:06:26 GMT]]></title><description><![CDATA[<p>das reicht mir scon alles an antwort!<br />
thx an euch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358880</guid><dc:creator><![CDATA[Disturbed]]></dc:creator><pubDate>Tue, 04 Sep 2007 15:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to geschweifte klammern on Tue, 04 Sep 2007 18:29:10 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Elektronix schrieb:</p>
<blockquote>
<p>Merkwürdig, denn bei Borland muß man alle Case-Zweigen klammern.</p>
</blockquote>
<p>Das würde mich wundern, es wäre auch ein eklatanter Verstoß gegen den Sprachstandard.</p>
</blockquote>
<p>Hmmm, kann mich auch irren, so genau hab ich nicht drauf geachtet. Werde ich mal nachprüfen. Jedenfalls habe ich immer Klammern gesetzt, und der Compi hat nie gemeckert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359003</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Tue, 04 Sep 2007 18:29:10 GMT</pubDate></item><item><title><![CDATA[Reply to geschweifte klammern on Tue, 04 Sep 2007 22:32:31 GMT]]></title><description><![CDATA[<p>ich glaube (soweit ich das beurteilen darf) muss man die klammern nicht setzten,<br />
kann sie aber der übersichts halber mit reinschreiben!<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359087</guid><dc:creator><![CDATA[Disturbed]]></dc:creator><pubDate>Tue, 04 Sep 2007 22:32:31 GMT</pubDate></item><item><title><![CDATA[Reply to geschweifte klammern on Tue, 04 Sep 2007 22:34:58 GMT]]></title><description><![CDATA[<p>Wie ich schon schrub, bilden die Klammern einen Block, in dem man Variablen deklarieren kann, die bei Verlassen des Blockes zerstört werden. Es macht also im Allgemeinen schon einen Unterschied, ob man ein paar Anweisungen einklammert oder nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359088</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 04 Sep 2007 22:34:58 GMT</pubDate></item></channel></rss>