gpt4 book ai didi

c++ -::MoveWindow 的问题 - 留下空白

转载 作者:可可西里 更新时间:2023-11-01 10:39:24 24 4
gpt4 key购买 nike

我非常渴望解决这个非常烦人的问题:(我试图在父窗口上显示一个子窗口。有时需要调整窗口大小。但出于某种原因,当我使用 MoveWindow 函数时,它会在父窗口的顶部留下空白区域。我想在这里展示一张图片,但我不能张贴图片。

代码示例如下:

HWND hwnd  // Comes from external function. Was defined as WS_CHILD previously
HWND hwndParent = ::GetParent(hwnd);
RECT parentRect = {0,0,0,0};
RECT childRect = {0,0,0,0};
::GetClientRect(hwndParent, &parentRect); // Suppose it returns {0,0,600,300}

BOOL ok = ::MoveWindow(hwnd, 0, 0, 600, 300, true);
::GetClientRect(hwnd, &childRect); // Will return {0,0,584,297}

为什么????

我做错了什么?我是否忘记了一些窗口初始化标志?!

最佳答案

与其使用 GetClientRect,不如使用 GetWindowRectMapWindowPoints(NULL,hwndParent,&parentRect,2) 将其调整为父窗口坐标. GetWindowRect 将包含 MoveWindow 需要的非客户区。

编辑:如果您想要一个没有非客户区的窗口,因此窗口矩形和客户矩形的大小相同,您需要修剪 window styles你应用于窗口。避免使用 WS_BORDER、WS_CAPTION、WS_DLGFRAME、WS_OVERLAPPED、WS_SIZEBOX 和 WS_THICKFRAME 样式。

关于c++ -::MoveWindow 的问题 - 留下空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7738755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com