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

#define STRICT
#include <windows.h>

LRESULT CALLBACK _export
WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  HDC hdc;

  switch (msg)
  {
    // Нажали левую клавишу мыши
    case WM_LBUTTONDOWN:
    {
      WORD xPos, yPos, nSize;
      BYTE szBuf[80];

      // Сохраняем координаты курсора мыши
      xPos   = LOWORD(lParam);
      yPos   = HIWORD(lParam);

      hdc = GetDC(hwnd);

      // Подготавливаем текстовую строку, содержащую
      // координаты курсора мыши
      nSize = wsprintf(szBuf, "(%d, %d)", xPos, yPos);

      // Выводим координаты курсора мыши
      // в точке, соответствующей положению
      // курсора мыши 
      TextOut(hdc, xPos, yPos, szBuf, nSize);

      ReleaseDC(hwnd, hdc);
      return 0;
    }

    // Нажали правую клавишу мыши
    case WM_RBUTTONDOWN:
    {
      // Перерисовываем все окно, стирая фон
      InvalidateRect(hwnd, NULL, TRUE);
      UpdateWindow(hwnd);
      return 0;
    }

    // Двойной щелчок левой клавишей мыши
    case WM_LBUTTONDBLCLK:
    {
      // Выдаем сообщение
      MessageBox(hwnd, "Двойной щелчок!",
	"MouseXY", MB_OK | MB_ICONINFORMATION);
      return 0;
    }

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

