Я новичок в c ++ и пытаюсь создать игру.
У меня есть 2d массив RECT_GRID прямоугольников.
У меня есть 2d массив GRID без знака короткого.
Я заполняю прямоугольный массив во время WM_CREATE
Событие WM_PAINT закрашивает прямоугольники для всех элементов в массиве. Цвет прямоугольника основан на значении GRID [x] [y]
Я сделал это так, когда нажата клавиша «вниз». Он меняет цвет одного из прямоугольников, установив GRID [1] [XMOVE] = на другой цвет.
тогда это делает недействительным клиентский прямоугольник
В основном, что происходит, это работает хорошо некоторое время, но в конечном итоге это просто прекращает рисовать вещи. Я проверил мою переменную XMOVE во время отладки, я проверил значения сетки и прочее, и все в порядке. Когда я удаляю цикл for из события рисования и фокусируюсь на 1 конкретном прямоугольнике, он никогда не завершается ошибкой, но если я пытаюсь перерисовать их все сразу, примерно через 20 раз, он перестает рисовать вещи. Что может вызвать это? Я новичок в c ++ и держу пари, что рисую неправильно и вызываю переполнение или что-то в этом роде.
Если бы кто-нибудь мог объяснить, что идет не так, или как правильно это сделать, я был бы очень признателен. Я не смог найти ничего подобного этому примеру в Google.
Спасибо
EDIT:
Я использую 3 глобальные кисти
HBRUSH A;
HBRUSH B;
HBRUSH C;
и когда я изменяю их, я всегда говорю A = MakeBrush (NUM);
Я правильно использую кисти?