Window 仅使用 WS_OVERLAPPED 时,不同 Windows 版本的大小不同

Window size differs in different Windows versions when only using WS_OVERLAPPED

当使用以下代码创建Window时:

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

我在 Windows XP 和 Windows 7 下得到不同的 Window 尺寸:

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

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

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


编辑:

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

我想你在找 AdjustWindowRect function:

Calculates the required size of the window rectangle, based on the desired client-rectangle size. The window rectangle can then be passed to the CreateWindow function to create a window whose client area is the desired size.