А это способ определить, используя события winAPI, какой последовательный COM порт был подключён или отключен.
WM_DEVICECHANGE
DBT_DEVICEARRIVAL
DBT_DEVICEREMOVECOMPLETE
DEV_BROADCAST_PORT_A
ссылка на канал | ссылка на группу
WM_DEVICECHANGE
DBT_DEVICEARRIVAL
DBT_DEVICEREMOVECOMPLETE
DEV_BROADCAST_PORT_A
ссылка на канал | ссылка на группу
Устаревшая реализация (deprecated implementation).
Новая реализация с исправлением ошибок
...
Функция
Например, когда число приходит в диапазоне от -128 до 127 (int8_t) и его нужно преобразовать в диапазон от 0 до 599 (высота окна в пикселях).
Нужно просто написать:
ссылка на канал | ссылка на группу
Новая реализация с исправлением ошибок
...
Функция
intMap нужна, чтобы сдвинуть, сжать или расширить числовой диапазон.Например, когда число приходит в диапазоне от -128 до 127 (int8_t) и его нужно преобразовать в диапазон от 0 до 599 (высота окна в пикселях).
Нужно просто написать:
int64_t value { 0 };
intMap(&value, -128, 127, 0, 599);
ссылка на канал | ссылка на группу
Media is too big
VIEW IN TELEGRAM
Проверка работы моей реализации слайдера.
Можно двигать список как ползунком, так и колёсиком мыши.
В зависимости от количества кнопок в списке меняется размер ползунка.
Если кнопки полностью помещаются в высоту списка, слайдер пропадает.
Панель чёрного цвета это область, где будет рисоваться график.
ссылка на канал | ссылка на группу
Можно двигать список как ползунком, так и колёсиком мыши.
В зависимости от количества кнопок в списке меняется размер ползунка.
Если кнопки полностью помещаются в высоту списка, слайдер пропадает.
Панель чёрного цвета это область, где будет рисоваться график.
ссылка на канал | ссылка на группу
This media is not supported in your browser
VIEW IN TELEGRAM
Не знаю, что там лежит за левой границей массива, но это очень похоже на двоичную арифметику).
ссылка на канал | ссылка на группу
ссылка на канал | ссылка на группу
Этот код составляет строку для отладочного экрана.
Выглядит массивно и страшно).
Будет интересно узнать, сколько времени, тактов процессора или ассемблерных инструкций нужно, чтобы выполнить этот код.
А потом переписать, используя свои строковые функции и замерить снова.
Благодаря проекту, я запросто сделаю динамические строки.
ссылка на канал | ссылка на группу
Выглядит массивно и страшно).
Будет интересно узнать, сколько времени, тактов процессора или ассемблерных инструкций нужно, чтобы выполнить этот код.
А потом переписать, используя свои строковые функции и замерить снова.
Благодаря проекту, я запросто сделаю динамические строки.
ссылка на канал | ссылка на группу
Вчера я решил в программе вместо GetTickCount использовать таймер высокого разрешения, но почему-то всё перестало работать.
В отладчике оказалось, что таймер возвращает текущее время в виде отрицательного количества наносекунд, что не нормально.
Оказалось, всё дело в переполнении.
И я нашёл способ, как решить эту проблему и получить правильное значение.
ссылка на канал | ссылка на группу
В отладчике оказалось, что таймер возвращает текущее время в виде отрицательного количества наносекунд, что не нормально.
Оказалось, всё дело в переполнении.
И я нашёл способ, как решить эту проблему и получить правильное значение.
ссылка на канал | ссылка на группу
Это реализация библиотеки chrono в msvc, а именно
Я недавно сделал обёртку над QPC/QPF и столкнулся с ошибкой переполнения типа
Что я недавно сделал, разработчики microsoft уже давно придумали и реализовали даже с комментариями в коде).
ссылка на канал | ссылка на группу
std::chrono::high_resolution_clock::now().Я недавно сделал обёртку над QPC/QPF и столкнулся с ошибкой переполнения типа
int64_t, спустя вечер реализовал алгоритм, который практически никогда не столкнётся с переполнением.Что я недавно сделал, разработчики microsoft уже давно придумали и реализовали даже с комментариями в коде).
ссылка на канал | ссылка на группу
Если кому-то действительно понадобится моя реализация функции
ссылка на канал | ссылка на группу
timeNow, таймера высокого разрешения (получение времени с точностью до 100 наносекунд), я выложу код на github, а пока и картинки хватит).frequency и tick хотелось бы сделать const, но я не знаю, как инициализировать const переменную non-const значением из функции без лямбды или создания дополнительных функций.ссылка на канал | ссылка на группу
Я сейчас задумываюсь о том, какие улучшения сделать в модуле Input (он хранит и обрабатывает ввод и события с клавиатуры и мыши).
Если вы уже разрабатывали игру или программу или только задумывались об этом, какие бы данные вам могли понадобиться?
Например, чтобы реализовать взаимодействие с графическим пользовательским интерфейсом (GUI), нужно знать координаты курсора (cursorPosition).
Чтобы реализовать перемещение элементов интерфейса курсором, например, виртуальных окошек, нужно знать на сколько пикселей он сдвинулся относительно значения в предыдущем кадре — дельту курсора (cursorMove).
Но для перемещения камеры cursorMove не подойдёт.
Это неточный способ, на него действует акселерация windows, а так же область движения будет ограничена размером экрана или окна.
Для более точного движения камеры без ограничений я использую raw input, это сырые данные без обработки напрямую с мыши, клавиатуры и не только.
Назвал эту переменную mouseMove.
ссылка на канал | ссылка на группу
Если вы уже разрабатывали игру или программу или только задумывались об этом, какие бы данные вам могли понадобиться?
Например, чтобы реализовать взаимодействие с графическим пользовательским интерфейсом (GUI), нужно знать координаты курсора (cursorPosition).
Чтобы реализовать перемещение элементов интерфейса курсором, например, виртуальных окошек, нужно знать на сколько пикселей он сдвинулся относительно значения в предыдущем кадре — дельту курсора (cursorMove).
Но для перемещения камеры cursorMove не подойдёт.
Это неточный способ, на него действует акселерация windows, а так же область движения будет ограничена размером экрана или окна.
Для более точного движения камеры без ограничений я использую raw input, это сырые данные без обработки напрямую с мыши, клавиатуры и не только.
Назвал эту переменную mouseMove.
ссылка на канал | ссылка на группу
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Ударил по столу и появились такие помехи на мониторе.
Прикольный эффект, я бы хотел повторить его, используя openGL.
ссылка на канал | ссылка на группу
Прикольный эффект, я бы хотел повторить его, используя openGL.
ссылка на канал | ссылка на группу
🔥1
Часто ли вы сталкивались с проблемами вывода кириллицы в консоль?
Что думаете насчёт написания статьи, которая ответит на вопросы: почему так происходит, как это можно решить?
Что думаете насчёт написания статьи, которая ответит на вопросы: почему так происходит, как это можно решить?
Anonymous Poll
62%
Нужна
38%
Не нужна
Недавно я включил отображение всех предупреждений, строгое соответствие стандарту C++ без расширений gnu и рассмотрение предупреждений, как ошибок.
(
У MinGW на windows я столкнулся с одной неудобной особенностью.
Во время runtime отладчик gdb не может остановиться на только что созданной точке останова.
С некоторыми ухищрениями это можно сделать, но в некоторых ситуациях это слишком неудобно или вовсе невозможно.
Поэтому я пользуюсь конструкцией
Но из-за
На помощь пришёл атрибут
(аналог в виде расширения gcc:
ссылка на канал | ссылка на группу
(
-Wall -Wextra -Wpedantic -Werror -std=c++17)У MinGW на windows я столкнулся с одной неудобной особенностью.
Во время runtime отладчик gdb не может остановиться на только что созданной точке останова.
С некоторыми ухищрениями это можно сделать, но в некоторых ситуациях это слишком неудобно или вовсе невозможно.
Поэтому я пользуюсь конструкцией
bool wait { }; или if(condition) { bool wait { }; } и заранее ставлю точку останова, чтобы отладчик зацепился за эту переменную и остановился в нужном мне месте и в нужный момент.Но из-за
-Wunused-variable и -Werror я не смогу скомпилировать код с неиспользуемыми переменными.На помощь пришёл атрибут
[[maybe_unused]] (C++17 и старше).(аналог в виде расширения gcc:
__attribute__((unused)), [[gnu::unused]]).ссылка на канал | ссылка на группу
Dmitry Develop
Недавно я включил отображение всех предупреждений, строгое соответствие стандарту C++ без расширений gnu и рассмотрение предупреждений, как ошибок. (-Wall -Wextra -Wpedantic -Werror -std=c++17) У MinGW на windows я столкнулся с одной неудобной особенностью.…
Другие способы решения этой проблемы, которые лично мне не понравились:
* Указать
* Использовать директиву
ссылка на канал | ссылка на группу
* Указать
-Wno-unused-variable, что отключит эти очень полезные предупреждения.* Использовать директиву
#pragma
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
// warned code
#pragma GCC diagnostic pop
* Добавить префикс "(void)" к переменнойbool unused { };(void)unused; // <--ссылка на канал | ссылка на группу
Dmitry Develop
Часто ли вы сталкивались с проблемами вывода кириллицы в консоль?
Что думаете насчёт написания статьи, которая ответит на вопросы: почему так происходит, как это можно решить?
Что думаете насчёт написания статьи, которая ответит на вопросы: почему так происходит, как это можно решить?
Что думаете насчёт создания видео или тектовой инструкции как установить и настроить окружение gcc + vscode под windows?
Anonymous Poll
54%
Надо
15%
Не надо
31%
Просто посмотреть ответы