如何使用 C++/Windows 创建仅基于屏幕大小(不包括窗口边框)的窗口?

发布于 2024-08-23 11:03:48 字数 423 浏览 9 评论 0原文

使用 CreateWindow(...) 创建窗口时,需要窗口宽度和高度,我必须输入值 656 和 516,而不是 640 和 480,以便考虑窗口边界。

我想知道是否有一种方法可以仅基于窗口中不包括边框的部分创建窗口,特别是考虑到如果不同版本的窗口具有不同大小的边框,那么当我运行程序时,程序的显示可能会有所不同在所述不同版本上

(即:如果用户的窗口版本具有不同大小的边框,则使用 640 - object.width 会将对象放置在不完全位于屏幕边缘的位置)。

那么有没有一种方法可以仅根据与程序相关的屏幕部分来创建窗口,或者至少创建一个类似于 GetVericalBorder()/GetHorizo​​ntalBorder() 的函数 以便我在 CreateWindow() 的参数中使用这些参数,而不是像 656 和 516 这样的任意且模糊的值?

When creating a window using CreateWindow(...), which requires the window width and height, I have to enter the values 656 and 516, instead of 640 and 480, so as to account for the windows border.

I'm wondering if there is a way to create a window based only on the portion of the window not including the border, especially considering that if different versions of windows have different size borders, than the program might be displayed differently when I run it on said different versions

(ie: using 640 - object.width will place the object not quite on the edge of the screen if the user's version of windows has different sized borders).

So is there a way to create a window based only on the portion of the screen relevant to the program, or at the vary least a function along the lines of GetVericalBorder()/GetHorizontalBorder() so that I use these in CreateWindow()'s parameters instead of arbitrary and vague values like 656 and 516?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

深白境迁sunset 2024-08-30 11:03:48

查看 AdjustWindowRectEx。您向此函数传递一个包含所需窗口客户区大小和窗口样式标志的矩形,它会计算整个窗口的大小,以便客户区达到所需大小。

Have a look at AdjustWindowRectEx. You pass this function a rectangle containing the desired size of your windows' client area, and the window style flags, and it calculates how big to make the overall window so that the client area is the desired size.

浅忆 2024-08-30 11:03:48

您可以使用 SystemParametersInfo() API 来获取此类窗口信息。请参阅 SPI_GETBORDER 和/或 SPI_GETNONCLIENTMETRICS 参数参考 Microsoft 库

SystemParametersInfo 应该允许您考虑边框、菜单等。

You can use the SystemParametersInfo() API to get this kind of window information. See the SPI_GETBORDER and/or SPI_GETNONCLIENTMETRICS parameters refer Microsoft Library

SystemParametersInfo should allow you to account for borders, menus, etc.

妥活 2024-08-30 11:03:48
int WINAPI GetSystemMetrics(
  __in  int nIndex
);

参考 Microsoft 库

int WINAPI GetSystemMetrics(
  __in  int nIndex
);

Refer Microsoft Library

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文