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



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

最佳答案

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

因此,将dwStyle参数设置为AdjustWindowRect()0不会更改lpRect,因此无法使用WS_OVERLAPPED

如果要计算顶级框架的大小,则可以改用WS_OVERLAPPEDWINDOWWS_CAPTION|WS_THICKFRAME

07-26 09:36