Я заметил что-то очень раздражающее при попытке создать окно на C++ и нарисовать прямоугольники, размер окна которых не соответствует размеру, который я установил.
Например, если я устанавливаю окно 480x240 и пытаюсь рисовать прямоугольники сверху вниз, слева направо, получая GetWindowRect(hwnd, &rect) и вычисляя ширину и высоту:
rectangle_width = (rect.right - rect.left) / amountRectangleX;
rectangle_height = (rect.bottom - rect.top) / amountRectangleY;
если amountRectangleX = 2 и Y = 2, он рисует 4 прямоугольника, но ширина и высота «выключены», поэтому он не заполняет весь экран или рендерится поверх него. Единственный способ, которым это может произойти (я сделал это на многих других языках, поэтому я знаю, что это работает), заключается в том, что если я установлю размер окна = 480x240, я хочу, чтобы это была область для «РИСЕНИЯ». Потому что, если границы включены в размер окна, это будет отличаться на другом компьютере с другим стилем окна и тому подобным. И я не могу просто «изменить» это вручную для своего компьютера.
Если я установлю размер окна = 480x240 и сделаю снимок экрана, я увижу, что пространство окна = 452x232, что сбивает с толку. Было бы нормально, если бы я установил размер окна = 480x240, но когда я GetWindowRect(), я получаю 452x232, а не 480x240, что тогда неверно, потому что у меня меньше места для рисования. Это объясняет, почему мои прямоугольники отображаются за пределами окна, а я этого НЕ хочу. Но я все еще хочу иметь возможность установить свой размер = 480x240 или что-то еще, но при этом иметь границы.
Почему это так работает и есть ли решение этой проблемы? Я не могу быть единственным, кто хочет иметь возможность устанавливать разрешение окна, и независимо от того, какой компьютер вы используете, установленный вами размер ЯВЛЯЕТСЯ ОБЛАСТЬЮ РИСОВАНИЯ, на которой вы можете рисовать.
GetClientRect
. Он получает часть, на которой вы можете рисовать, и исключает границу/заголовок/и т.д.. - person chris   schedule 02.08.2012rect.right - rect.right
? Уверены ли вы? - person Lol4t0   schedule 02.08.2012