 // '01 Main.cpp'
#include <windows.h>

 // Prototyp programu obsługi komunikatów
LRESULT CALLBACK WndProc (HWND hWindow, UINT iMessage, 
                          WPARAM wParam, LPARAM lParam);

 // "WinMain kontra main"
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInst, 
                    LPSTR lpCmdLine, int nShowCmd)
{
  // "Klasa Okna"
 WNDCLASS	kWndClass;
	
  // Właściwości wyświetlania
 kWndClass.hCursor       = LoadCursor (NULL, IDC_ARROW);
 kWndClass.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
 kWndClass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

  // Właściwości systemowe
 kWndClass.hInstance     = hInstance;
 kWndClass.lpfnWndProc   = WndProc;
 kWndClass.lpszClassName = "01 Basic Window";

  // Właściwości dodatkowe
 kWndClass.lpszMenuName  = NULL;

 kWndClass.cbClsExtra = NULL;
 kWndClass.cbWndExtra = NULL;
 kWndClass.style      = NULL;

  // Próba rejestracji klasy
 if (!RegisterClass (&kWndClass))
 {
  return -1;
 }

  // "Okno"
 HWND hWindow;
  // Tworzenie okna
 hWindow = CreateWindow ("01 Basic Window", "01 Basic Window", 
                         WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT,
                         CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 
                         NULL, NULL, hInstance, NULL);
 ShowWindow (hWindow, nShowCmd);
  // "Pętla komunikatów"
 MSG kMessage;
  // Wejdź do pętli komunikatów i obsługuj komunikaty przesłane do tego
  // okna
 while (GetMessage (&kMessage, hWindow, 0, 0))
 {
  TranslateMessage (&kMessage);
  DispatchMessage (&kMessage);
 }

return 0L;
}

// "Program obsługi komunikatów"
LRESULT CALLBACK WndProc (HWND hWindow, UINT iMessage, 
                          WPARAM wParam, LPARAM lParam)
{
 switch (iMessage)
 {
 // Zamknij okno
 case WM_CLOSE:
  PostQuitMessage (0);
 break;

 default:
  return DefWindowProc (hWindow, iMessage, wParam, lParam);
 }
 return 0;
}



