【问题标题】:Window size differs in different Windows versions when only using WS_OVERLAPPED仅使用 WS_OVERLAPPED 时,不同 Windows 版本的窗口大小不同
【发布时间】:2015-11-01 01:30:49
【问题描述】:

使用以下代码创建Window时:

CreateWindowEx(0, "WinClass", "My Title", WS_OVERLAPPED | WS_SYSMENU, 261, 172, 594, 384, NULL, NULL, hInstance, NULL);

我在 Windows XP 和 Windows 7 下得到不同的窗口大小:

但是,当我添加WS_THICKFRAME 样式时,问题就解决了:

CreateWindowEx(0, "WinClass", "My Title", WS_OVERLAPPED | WS_SYSMENU | WS_THICKFRAME, 261, 172, 594, 384, NULL, NULL, hInstance, NULL);

但不幸的是,WS_THICKFRAME 使窗口可调整大小,这是我不想要的。


编辑:

我希望它在不同版本的 Windows 中保持相同大小的是客户区。

【问题讨论】:

  • 坐标是窗口的内尺寸还是外尺寸?
  • @Olaf 窗口的内部或外部尺寸是什么意思?
  • 很难看出这里的实际问题是什么。或者确实你的问题是什么。您能否展开以向我们说明您想回答什么问题。
  • 在不同版本的Windows下,窗框的粗细会有所不同。最好从所需的客户端尺寸(Olaf 所说的“内部尺寸”)开始 - inside 框架的区域 - 并使用AdjustWindowRectEx 来计算总尺寸。
  • @Olaf:它叫做客户区。如果您想与 Windows 开发人员一起玩,请习惯他们的术语。 (顺便说一句,非客户区也是“可用”。)

标签: c winapi windows-7 windows-xp


【解决方案1】:

我想你在找AdjustWindowRect function:

计算所需的窗口矩形大小,基于 所需的客户矩形大小。然后可以传递窗口矩形 到 CreateWindow 函数创建一个窗口,其客户区是 所需的大小。

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多