Один разработчик создал минималистичное ToDo-приложение для Windows, используя только чистый C. Никаких фреймворков, никакого лишнего кода — всего 278 КБ! 💻✨ Идеально для любителей лаконичных решений. Кто рискнёт повторить?
Технический обзор
Simple Todo (C / WinAPI) — это современное нативное приложение для управления задачами, разработанное на чистом C с использованием Win32 API. Проект демонстрирует продвинутые возможности программирования графического интерфейса и интеграции с системой Windows, сохраняя при этом минимальный размер исполняемого файла — всего 26.5 КБ после сжатия UPX.
Ключевые особенности
- Базовый функционал: создание, редактирование и удаление задач
- Отметка выполнения: возможность помечать задачи как завершенные
- Персистентное хранение: данные сохраняются в %APPDATA%\TodoApp\todos.dat
- Интеграция с системой: поддержка сворачивания в трей
- Нативный интерфейс: полное соответствие стандартам Windows
- Автозагрузка: опция запуска с системой
Технические детали
Архитектура и реализация
Приложение построено на следующих технологиях:
- Язык программирования: чистый C (стандарт C11)
- GUI-фреймворк: Win32 API
- Системная интеграция:
- Работа с системным треем (Shell_NotifyIcon)
- Поддержка современных визуальных стилей через манифест
- Обработка системных сообщений
Хранение данных
- Формат: бинарный файл с сериализованными структурами
- Расположение: %APPDATA%\TodoApp\todos.dat
- Ограничения: максимум 100 задач
Производительность
- Размер исполняемого файла:
- 278 КБ (несжатый)
- 26.5 КБ (после UPX)
- Потребление памяти: <10 МБ в рабочем состоянии
Руководство по сборке
Требования
- ОС: Windows 7+
- Компилятор: MinGW-w64 (GCC)
- Дополнительно: Windows SDK (входит в MinGW)
Пошаговая сборка
-
Установите MinGW-w64:
- Скачайте с официального сайта
- Или используйте MSYS2
- Добавьте bin-директорию MinGW в PATH
-
Клонируйте репозиторий:
git clone https://github.com/Efeckc17/simple-todo-c.git cd simple-todo-c -
Соберите проект:
.\build.bat
Структура проекта
.
├── src/
│ ├── main.c # Точка входа
│ ├── todo.c # Логика работы с задачами
│ ├── todo.h # Структуры данных
│ └── gui.c # Ð еализация интерфейса
├── bin/ # Исполняемый файл
├── build.bat # Скрипт сборки
└── README.md # Документация
Сравнение с альтернативами
| Характеристика | Simple Todo (C) | Electron-приложение | WinForms |
|---|---|---|---|
| Размер исполняемого | 278 КБ | 50+ МБ | 1-2 МБ |
| Потребление памяти | <10 МБ | 100+ МБ | 20-30 МБ |
| Время запуска | <0.1 сек | 1-2 сек | 0.3 сек |
| Системные требования | Windows 7+ | Windows 7+ | .NET FW |
Практическое применение
Для каких задач подходит
- Быстрое создание прототипов Win32-приложений
- Образовательные цели (изучение Win32 API)
- Легковесные системные утилиты
- Приложения, где критичен размер исполняемого файла
Ограничения
- Нет кроссплатформенности
- Ограниченный UI-функционал по сравнению с современными фреймворками
- Максимум 100 задач в хранилище
Заключение
Simple Todo демонстрирует, что даже в 2023 году нативные Win32-приложения на C могут быть:
- Крайне компактными
- Полностью интегрированными с ОС
- Эффективными с точки зрения ресурсов
Проект особенно интересен:
- Системным программистам, изучающим WinAPI
- Разработчикам, создающим легковесные утилиты
- Всем, кто ценит минимализм и производительность
Лицензия: MIT. Вклад приветствуется через Pull Request’ы.