Перейти к содержанию

Разработка AnimeViewManager [C++/WinAPI]


Coder

Рекомендуемые сообщения

И так, так всё что я смотрел уже тяжело запоминать, да и не всегда удобно искать это в текстовом документе, а также каждый раз писать какую именно серию же я посмотрел.

Поэтому решил написать небольшое приложение, которое будет делать это за меня.

Разработка начата.

Используемые библиотеки: SQLite

Целевой язык: C++ с использованием WinAPI

Текущее время разработки: 90 часов.

Планируется: возможность импорта информации об аниме со всех популярных сайтов подобной тематики.

Интерфейсу в данный момент внимание не уделяется, сейчас полностью сосредоточен на системном программировании.

v0.5 (включает в себя тестовую БД) AVM_0.5.zip

Change log:

+ Добавлена поддержка Windows XP

+ Исправлен баг, когда при редактировании аниме в окне с информацией о нём не обновлялись жанры

+ Исправлено мерцание списка аниме, теперь используется двойная буферизация

+ Локализована утечка памяти

+ Уменьшено потребление оперативной памяти

+ Уменьшен размер файла программы

Прошлые версии:

v0.1 (for non Windows XP users, in next updates will fixed) AVM_0.1.zip

Скриншоты:

post-8127-0-59653600-1385234137_thumb.jp post-8127-0-59748100-1385234146_thumb.jp

v0.2 (for non Windows XP users, in next updates will fixed), (with database) AVM_0.2.zip

Change log:

+ Добавлена сортировка (в дальнейшем будет улучшена)

+ Добавлена возможность изменения размеров окна (в том числе и развернуть во весь экран)

+ Максимальный размер описания аниме 4096 символов

Скриншоты:

post-8127-0-76039400-1385292203_thumb.jp

v0.3 (for non Windows XP users, in next updates will fixed), (with database) AVM_0.3.zip

Change log:

+ Уменьшено потребление ресурсов

+ Увеличена стабильность приложения

+ Сортировка теперь функционирует корректно

+ При нажатии в окне программы клавиши F5, произойдёт обновление списка аниме

+ При нажатии в окне программы клавиши Delete, произойдёт удаление выбранного аниме (будет запрошено подтверждение)

Скриншоты:

post-8127-0-32864100-1385372937_thumb.jp

v0.4 (for non Windows XP users, in next updates will fixed), (with database) AVM_0.4.zip

Change log:

+ Добавлен поиск по базе данных

+ Увеличена стабильность программы

+ Исправлены критические ошибки в субклассинге контролов

+ При нажатии Ctrl + F в главном окне программы - произойдёт открытие поиска по БД

+ При нажатии Enter в главном окне программы (а также окне поиска), и наличии выделенного аниме в списке - произойдёт открытие информации о выделенном аниме

+ При нажатии F5 в окне поиска, а также при активном фокусе на списке найденного аниме произойдёт - повторный поиск по БД.

+ При нажатии Delete в окне поиска - произойдёт удаление выбранного аниме (будет запрошено подтверждение).

Скриншоты:

post-8127-0-78659700-1385478567_thumb.jp post-8127-0-69134000-1385478568_thumb.jp

v0.4.5 (for non Windows XP users, in next updates will fixed) AVM_0.4.5.zip

Change log:

+ При добавлении аниме теперь можно указать количество просмотренных эпизодов

+ При редактировании аниме теперь можно указать количество просмотренных эпизодов

+ Уменьшено потребление ресурсов

+ Небольшие корректировки в языковых файлах

Скриншоты:

post-8127-0-92772000-1385561371_thumb.jp

v0.4.6 (for non Windows XP users, in next updates will fixed) AVM_0.4.6.zip

Change log:

+ Исправлен некорректный вывод сообщения с подтверждением об удалении аниме

+ При попытке выбрать другой язык или БД стартовая папка будет папка, из которой был произведён запуск приложения. (спасибо doс9009, он сообщил о баге - что стартовая директория это не папка с приложением, а последняя указанная)

+ Небольшая оптимизация кода

Скриншоты:

- интерфейс приложения не изменялся, смотрите скриншоты из последней прошлой версии под спойлером.

Ссылка на комментарий
Поделиться на другие сайты

есть предложение сделать опцию продолжить просмотр, то есть открыл прогу, выбрал анимэ, нажал на кнопку продолжить просмотр и прога открывает браузер или свой встроенный плеер с серией, на которой ты остановился.

можно если через встроенный плеер в проге смотреть запоминать где остановился просмотр с точностью до секунды и при следующем открытии продолжить просмотр например с середины серии. Короче задумка не плохая у тебя

Ссылка на комментарий
Поделиться на другие сайты

есть предложение сделать опцию продолжить просмотр, то есть открыл прогу, выбрал анимэ, нажал на кнопку продолжить просмотр и прога открывает браузер или свой встроенный плеер с серией, на которой ты остановился.

можно если через встроенный плеер в проге смотреть запоминать где остановился просмотр с точностью до секунды и при следующем открытии продолжить просмотр например с середины серии. Короче задумка не плохая у тебя

Ну тут главная проблема в том, что сайтов где можно смотреть анимэ бесчисленное множество, но мало по мало я доберусь и до этого, первый сайт который будет в списке поддерживаемых, скорее всего будет AOS.

Ссылка на комментарий
Поделиться на другие сайты

Содер--- вот вам сайт с анимэ онлайн

http://adultmult.ru/anime.html он самый крупнейший у нас в России .....

Ну начнём с того, что мой ник на русском читается как Кодер (ударение на первый слог), а во вторых я бы не назвал и близко данный сайт крупнейшим.

Тот же АОС, анидаб и анилибрия гораздо более крупные и с более приятным дизайном и интерфейсом.

Добавлен парсинг жанров из соответсвующей таблицы (не в БД) и учёт серий.

Добавлено всплывающее окно, если по анимэ щёлкнуть два раза. В этом окне можно будет удалить анимэ из списка, отредактировать информацию о нём.

Открыть два окна с одним и тем же анимэ невозможно. Также при изменении просмотренных эпизодов невозможно выйти за пределы (0 и макс. количество эпизодов у данного анимэ).

Также напоминаю, что вся информация хранится в БД SQLite, и на момент и после редактирование информации об анимэ она всегда поддерживается в актуальном виде.

Добавил меню, сделал пока что форму с добавлением аниме.

И так... реализована многоязычность, посредством использования языковых файлов. В качестве хранилища строк был выбран std::vector.

И так, доделал форму с добавлениями аниме, в том числе и её обработчики.

Ограничения: максимальное количество жанров для одного аниме 15, максимальное кол-во эпиздов для одного аниме 100000.

Также естественно добавлять повторно одни и те же жанры невозможно.

post-8127-0-43605300-1385105378_thumb.jp

Улучшена форма добавления аниме, добавлена возможность указывать год выпуска и описание аниме.

Описание не может занимать более 1024 символов.

post-8127-0-41268400-1385108812_thumb.jp

Обновил класс для работы с SQLite, код сократился на 50%, также есть небольшой прирост в производительности.

И так во избежания ошибок по работе с БД пришлось написать аналог mysql_real_escape_string в PHP под C++.

Метод назвал safesql.

Обновление: максимальный лимит описания теперь составляет 2048 символов!

Исправлена критическая ошибка.

Когда программа не могла найти языковой файл, она впадала в бесконечный цикл и нещадно пожирала память сотнями гигабайт.

Написал английскую локализацию. И добавил поддержку конфиг файла.

Ссылка на комментарий
Поделиться на другие сайты

3 часа пытался понять почему после вызова GetOpenFileName я не мог открыть не один файл через ifstream. Я уже и через WinAPI-шные функции начал пытаться. И тут я увидел, что после открытия хэндл невалидный (0xFFFFFFFF), что и следовало ожидать. Я решил посмотреть код ошибки - и мне подсказал его GetLastError!

Код ошибки был 2 (файл не найден)! И тут ко мне спустя 3 часа неудачных попыток пришло озарение! Решение оказалось нереально простым!


char* buffer = new char[255];
memset(buffer, 0, 255);
GetCurrentDirectoryA(255, buffer);
... здесь необходимые действия
SetCurrentDirectory(buffer);
delete[] buffer;

Обновление: добавлена функция быстрой смены языка приложения и базы данных (для применения изменений, не требуется перезагрузка приложения).

Конфигурация вынесена в ini файл.

Скоро выложу бета-версию приложения.

Добавлена возможность удалить аниме и отредактировать существующее.

post-8127-0-85082400-1385198728_thumb.jp post-8127-0-70737400-1385198945_thumb.jp

Осталось совсем немного до первого релиза.

Идёт работа над высвобождением ресурсов и оптимизацией потребляемых ресурсов.

Также немного корректируется GUI.

Ссылка на комментарий
Поделиться на другие сайты

Выложил в шапку темы версию 0.1

Буду признателен за описание всех багов, которые нашли

P.S. при смене языка, в дочерних окнах текст изменится, если вы откроете их снова (в версии 0.2 будет доделано).

Ссылка на комментарий
Поделиться на другие сайты

Добавлена возможность сортировки (по имен, году, кол-ву жанров и просмотренных эпизодов) и максимальная длина описания аниме увеличена до 4096 символов!

Исправлен редкий вылет приложения при открытии информации об аниме.

post-8127-0-46260900-1385287883_thumb.jp

Опубликована версия 0.2

Известные баги: мерцание ListView + из версии 0.1

В дальнейшем ожидается рефакторинг GUI движка и оптимизация ресурсов.

Ссылка на комментарий
Поделиться на другие сайты

Coder привет, Наверное в программе дочерние окна нужно делать так что бы открывались как диалоговые окна, а то их можно открывать без конечно. Или так задумана?

Coder можно мне тоже попробовать создать такую программу на Сшарпе и выложить сюда? (просто мне тоже стало интересно из за работой с базу данных. Только мой немножко будет отличаться, т.е. будет работать с одним сайтом. (наверно с сайтом который STAVROS дал))

Ссылка на комментарий
Поделиться на другие сайты

Coder привет, Наверное в программе дочерние окна нужно делать так что бы открывались как диалоговые окна, а то их можно открывать без конечно. Или так задумана?

Coder можно мне тоже попробовать создать такую программу на Сшарпе и выложить сюда? (просто мне тоже стало интересно из за работой с базу данных. Только мой немножко будет отличаться, т.е. будет работать с одним сайтом. (наверно с сайтом который STAVROS дал))

Это о каких дочерних окнах бесконечных ты говоришь?

Нельзя открыть более 1 окна с одним и тем же аниме.

Почти готова версия 0.3!

Изменения в GUI движке:

Добавлен субклассинг контролов, реализован на ООП путём подмены указателей в виртуальной таблицы.

Версия 0.3 опубликована (смотрите в шапку темы)!

Если найдёте баги или заметите вылеты программы, просьба отписаться здесь.

Ссылка на комментарий
Поделиться на другие сайты

Это о каких дочерних окнах бесконечных ты говоришь?

Нельзя открыть более 1 окна с одним и тем же аниме.

С одним и тем же да, не открыть. Но с другими можно, это как то не естественно мне кажется.

Ссылка на комментарий
Поделиться на другие сайты

С одним и тем же да, не открыть. Но с другими можно, это как то не естественно мне кажется.

Это тебе так кажется. А я не вижу смысла ограничивать пользователя в свободе.

Также конфиг, локализация и БД приложения хранятся в открытом виде.

Идёт работа над реализацией интерфейса и функционала для поиска аниме в базе данных.

Ссылка на комментарий
Поделиться на другие сайты

Бета версия интерфейса поиска уже готова!

Правда с этим возникла проблема, искать напрямую через БД было немного накладно, поэтому часть препроцессинга пришлось написать мне самому.

Это связано с тем, что якобы в ядре sqlite неправильно происходит lower и upper русских букв (и да да я пытался подставлять туда уже и строку перекодированную с ASCII в UTF-8, но ничего не выходило.

Поэтому было принято решение написать свой регистронезависимый вариант поиска - то бишь LIKE (который поддерживает русский и другие языки) путём подмены функции LIKE в SQLite, чтобы не таскать с собой тяжеленную библиотеку ICU.

post-8127-0-09631200-1385464616_thumb.jp post-8127-0-74155000-1385464616_thumb.jp

Теперь интерфейс поиска полностью совместим с базой данных, и поиск по описанию теперь работает корректно!

post-8127-0-96793100-1385469295_thumb.jp

Релиз версии 0.4 уже скоро!

Идут работы над GUI.

Релиз версии 0.4 успешно состоялся!

Скриншоты и загрузка в шапке темы (1-й пост)!

Coder можно мне тоже попробовать создать такую программу на Сшарпе и выложить сюда? (просто мне тоже стало интересно из за работой с базу данных. Только мой немножко будет отличаться, т.е. будет работать с одним сайтом. (наверно с сайтом который STAVROS дал))

Я не могу тебе этого запрещать, но тебе придётся сделать собственный топик.

Ссылка на комментарий
Поделиться на другие сайты

Это не флудильня, а самый что ни на есть мозговой штурм или даже Программирование. При чём тут флудильня...

Ну просто, такого раздела нет у нас на форуме :)

Вот и создал тему здесь :)

Добавлена версия 0.4.5!

P.S. разработку придётся приостановить на некоторое время, так как у меня началась адская сессия и дьявольские преподы хотят заполучить мою душу.

Компьютерное моделирование.... алгоритмизация...

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Появилось немного свободного времени.

Провёл небольшой рефакторинг кода, отказался от использования структур, теперь в код полностью объектно-ориентирован.

Также провёл в классе helper большую оптимизацию, что существенно уменьшило кол-во затрачиваемого времени на выполнение операций.

Может скакать потребление памяти, так как ListView больше не мерцает (используется двойная буферизация).

Версия 0.5 в шапке.

Из того что планируется: рейтинг аниме, онлайн просмотр и создание контекстного меню (что ещё больше упростит интерфейс).

Сейчас идёт работа над изучением DirectShow и пишутся компоненты для парсинга веб сайтов.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.