Win32 Window with Menu:                                                                         Notes   Code
#include <windows.h>

#define IDM_COMMANDS       101 //menu item ID is arbitrarily, but unique
#define IDM_ABOUT          105

HWND hwndMain; 

LRESULT CALLBACK  WndProc( HWND hwnd,
                           UINT iMsg,
                           WPARAM wParam,
                           LPARAM lParam );


int APIENTRY  WinMain( HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPSTR lpszCmdLine,
                       int nCmdShow ) 
{ 
    MSG msg; 
    WNDCLASS wc; 
    UNREFERENCED_PARAMETER(lpszCmdLine); 
  
    wc.style         = 0; 
    wc.lpfnWndProc   = (WNDPROC) WndProc; 
    wc.cbClsExtra    = 0; 
    wc.cbWndExtra    = 0; 
    wc.hInstance     = hInstance; 
    wc.hIcon         = LoadIcon((HINSTANCE) NULL, IDI_APPLICATION); 
    wc.hCursor       = LoadCursor((HINSTANCE) NULL, IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 
    wc.lpszMenuName  =  "MainMenu"; 
    wc.lpszClassName = "MainWndClass"; 
 
    RegisterClass(&wc);
 
    hwndMain = CreateWindow( "MainWndClass",
                             "Win32 Window", 
                             WS_OVERLAPPEDWINDOW,
                             CW_USEDEFAULT,
                             CW_USEDEFAULT,
                             CW_USEDEFAULT,
                             CW_USEDEFAULT,
                             (HWND) NULL,
                             (HMENU) NULL,
                             hInstance,
                             (LPVOID) NULL); 
                             
    ShowWindow(hwndMain, nCmdShow); 
    UpdateWindow(hwndMain);
    
    while(GetMessage(&msg, (HWND) NULL, 0, 0)) 
    {
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    }
 
    return msg.wParam; 
} 
 

LRESULT CALLBACK WndProc( HWND hwnd, 
                          UINT iMsg, 
                          WPARAM wParam, 
                          LPARAM lParam )
{
    switch( iMsg )
    {
        case WM_CREATE:
	{
            HMENU hMenuMain;
	    HMENU hMenuPopup1,hMenuPopup2;

            hMenuMain   = CreateMenu();
            hMenuPopup1 = CreatePopupMenu();

	    AppendMenu (hMenuMain,  MF_STRING|MF_POPUP,(UINT)hMenuPopup1,"Commands" );
            AppendMenu (hMenuPopup1,MF_STRING, IDM_COMMANDS, "Press Me ..." );

	    hMenuPopup2 = CreatePopupMenu();
            AppendMenu (hMenuMain,   MF_STRING|MF_POPUP, (UINT)hMenuPopup2, "Help" );
	    AppendMenu (hMenuPopup2, MF_STRING,                  IDM_ABOUT, "About");

	    SetMenu ( hwnd, hMenuMain );
            break;
	}
        case WM_PAINT:
	{
	    //MessageBox( hwnd, "Paint",  "Paint", S_OK );
	    break;
	}
	case WM_COMMAND:
	{
	    HMENU hMenu      = GetMenu(hwnd);
	    switch (LOWORD(wParam))
	    {
                case IDM_COMMANDS:
		{
		    DWORD dMenuState = GetMenuState(hMenu, IDM_COMMANDS, MF_BYCOMMAND);
		    if(dMenuState == MF_UNCHECKED)
		    {
		        CheckMenuItem(hMenu, IDM_COMMANDS, MF_BYCOMMAND | MF_CHECKED);
		    }
		    else
		    {
		        CheckMenuItem(hMenu, IDM_COMMANDS, MF_BYCOMMAND | MF_UNCHECKED);
		    }
		    break;
	        }
		case IDM_ABOUT:
	        {
		    MessageBox(NULL, 
			       "You've just clicked About menu item", 
			       "Message", 
				MB_OK);
		    break;
		}
	    }
            break;
	}
	case WM_DESTROY:
	{
	    MessageBox( hwnd, "Paint",  "Paint", S_OK );
	    PostQuitMessage(0);
	    break;
	}
		
    }
    return DefWindowProc( hwnd, iMsg, wParam, lParam );
}
(c) 2002, Stan Malevanny