C++ でウィンドウを作成し、ウィンドウ サイズが設定したサイズと一致しない Rectangle を描画しようとしているときに、非常に厄介なことに気付きました。
たとえば、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 を設定した場合、それを「描画」する領域にしたいということです。ウィンドウのサイズに境界線が含まれている場合、ウィンドウスタイルなどが異なる別のコンピューターでは異なるためです。そして、これを自分のコンピューターで手動で「変更」することはできません。
ウィンドウ サイズ = 480x240 に設定してスクリーンショットを撮ると、紛らわしいウィンドウ スペース = 452x232 が表示されます。ウィンドウ サイズ = 480x240 に設定しても問題ありませんが、GetWindowRect() を実行すると、480x240 ではなく 452x232 が取得されます。これは、描画するスペースが少ないため無効です。これは、なぜ私の Rectangles がウィンドウ空間を超えてレンダリングされるのかを説明し、私はそれを望んでいません。しかし、サイズ = 480x240 またはその他のものを設定できるようにしたいのですが、まだ境界線があります。
なぜこのように機能し、この問題の解決策はありますか? ウィンドウの解像度を設定できるようにしたいのは私だけではありません。使用するコンピューターに関係なく、設定したサイズは、描画できる描画領域です。