// =====================================
// Функция WndProc
// =====================================

#define STRICT
#include <windows.h>
#include <stdio.h>

extern HINSTANCE hInst;

LRESULT CALLBACK _export
WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  HDC hdc;             // индекс контекста устройства
  PAINTSTRUCT ps;      // структура для рисования

  // Размеры пиктограммы
  static int xIcon, yIcon;

  // Идентификатор пиктограммы
  HICON hIcon;

  switch (msg)
  {
    case WM_CREATE:
    {
      // Определяем размеры пиктограммы
      xIcon = GetSystemMetrics(SM_CXICON);
      yIcon = GetSystemMetrics(SM_CYICON);
      break;
    }

    case WM_PAINT:
    {
      hdc = BeginPaint(hwnd, &ps);

      // Загружаем и рисуем встроенные пиктограммы
      hIcon = LoadIcon(0, IDI_APPLICATION);
      DrawIcon(hdc, xIcon/2, yIcon/2, hIcon);

      hIcon = LoadIcon(0, IDI_ASTERISK);
      DrawIcon(hdc, xIcon/2 + xIcon*2, yIcon/2, hIcon);

      hIcon = LoadIcon(0, IDI_EXCLAMATION);
      DrawIcon(hdc, xIcon/2 + xIcon*4, yIcon/2, hIcon);

      hIcon = LoadIcon(0, IDI_HAND);
      DrawIcon(hdc, xIcon/2 + xIcon*6, yIcon/2, hIcon);

      hIcon = LoadIcon(0, IDI_QUESTION);
      DrawIcon(hdc, xIcon/2 + xIcon*8, yIcon/2, hIcon);

      // Загружаем и рисуем свою пиктограмму,
      // указанную в файле описания ресурсов
      hIcon = LoadIcon(hInst, "AppIcon");
      DrawIcon(hdc, xIcon/2, yIcon/2 + yIcon*2, hIcon);

      EndPaint(hwnd, &ps);
      return 0;
    }

    case WM_DESTROY:
    {
      PostQuitMessage(0);
      return 0;
    }
  }
  return DefWindowProc(hwnd, msg, wParam, lParam);
}
