7

MSDN 库将 AdjustWindowRect 的 dwStyle 参数记录为:

要计算其所需大小的窗口的窗口样式。请注意,您不能指定 WS_OVERLAPPED 样式。

我还没有找到任何解释。他们所说的“不能”是什么意思,为什么我不能这样做?

4

1 回答 1

13

WS_OVERLAPPED样式定义为零:

#define WS_OVERLAPPED    0x00000000L

AdjustWindowRect()正在检查提供的样式标志并相应地修改 RECT:

// ...
if( dwStyle & WS_BORDER ) {
    const int cx = GetSystemMetrics(SM_CXBORDER);
    const int cy = GetSystemMetrics(SM_CYBORDER);
    lpRect->top -= cy;
    lpRect->left -= cx;
    lpRect->right += cx;
    lpRect->bottom += cy;
}
// ...

因此AdjustWindowRect()将 dwStyle 参数设置为0不会改变 lpRect,因此WS_OVERLAPPED不能使用。

如果您想计算顶级框架的大小,可以使用WS_OVERLAPPEDWINDOWorWS_CAPTION|WS_THICKFRAME代替。

于 2012-12-10T01:07:15.083 回答