在尝试在 C++ 中创建一个窗口并绘制窗口大小与我设置的大小不匹配的矩形时,我注意到一些非常烦人的事情。
例如,如果我设置 480x240 窗口并尝试通过获取 GetWindowRect(hwnd, &rect) 从上到下、从左到右绘制矩形并计算宽度和高度:
rectangle_width = (rect.right - rect.left) / amountRectangleX;
rectangle_height = (rect.bottom - rect.top) / amountRectangleY;
如果 amountRectangleX = 2 和 Y = 2 它会绘制 4 个矩形,但宽度和高度是“关闭的”,因此它不会填满整个屏幕或渲染它。发生这种情况的唯一方法(我已经用很多其他语言做过,所以我知道它有效)是,如果我设置 Window Size = 480x240,我希望它成为“DRAW”的区域。因为如果边框包含在窗口的大小中 - 在另一台具有不同窗口样式等的计算机上会有所不同。而且我不能只是为我的计算机手动“更改”它。
如果我设置窗口大小 = 480x240 并截屏,我会看到窗口空间 = 452x232,这令人困惑。如果我设置窗口大小 = 480x240 就可以了,但是当我 GetWindowRect() 我得到 452x232 而不是 480x240 时这是无效的,因为我没有足够的空间来绘制。这可以解释为什么我的 Rectangles 渲染超出了窗口空间,而我不希望这样。但我仍然希望能够设置我的尺寸 = 480x240 或其他任何东西,但仍然有边框。
为什么它会以这种方式工作,是否有解决此问题的方法?我不能是唯一一个想要能够设置窗口分辨率的人,无论您使用什么计算机,您设置的尺寸都是您可以绘制的绘图区域。