Using Labels in the case Statement

Labels that appear after the case keyword cannot also appear outside a switch statement. (This restriction also applies to the default keyword.) The following code fragment shows the correct use of case labels:

// Sample Microsoft Windows message processing loop.

switch( msg )

{

case WM_TIMER: // Process timer event.

SetClassWord( hWnd, GCW_HICON, ahIcon[nIcon++] );

ShowWindow( hWnd, SW_SHOWNA );

nIcon %= 14;

Yield();

break;

case WM_PAINT:

// Obtain a handle to the device context.

// BeginPaint will send WM_ERASEBKGND if appropriate.

memset( &ps, 0x00, sizeof(PAINTSTRUCT) );

hDC = BeginPaint( hWnd, &ps );

// Inform Windows that painting is complete.

EndPaint( hWnd, &ps );

break;

case WM_CLOSE:

// Close this window and all child windows.

KillTimer( hWnd, TIMER1 );

DestroyWindow( hWnd );

if( hWnd == hWndMain )

PostQuitMessage( 0 ); // Quit the application.

break;

default:

// This choice is taken for all messages not specifically

// covered by a case statement.

return DefWindowProc( hWnd, Message, wParam, lParam );

break;

}