AdjustWindowRect文档

时间:2012-12-09 23:00:37

标签: c++ c windows winapi

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

  

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

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

1 个答案:

答案 0 :(得分:11)

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;
}
// ...

因此,将{0}设置为AdjustWindowRect()的{​​{1}}不会改变lpRect,因此无法使用0

如果您希望计算顶级框架的尺寸,可以改用WS_OVERLAPPEDWS_OVERLAPPEDWINDOW