gpt4 book ai didi

c++ - MFC CWnd 高度和宽度

转载 作者:太空狗 更新时间:2023-10-29 23:32:35 25 4
gpt4 key购买 nike

如何获取 CWnd* 的高度和宽度? CWnd 窗口是否正确?为什么不是命令:

CWnd* parent = this->GetParent(); // C++ command
parent->GetSize(); // what I think the method should be OR ...
parent->GetWindowRect(); // what i think it should be (no arguments)

这是什么LPRECT?我已经有了这个对象……为什么以及进入 GetWindowRect 的参数是什么?我指的是什么?我已经有了要查找大小的对象...只需给我大小即可。

最佳答案

LPRECT 参数是指向 RECT structure 的指针(由于历史原因,“LP”前缀实际上代表“长指针”)。

GetWindowRect function将为您的 CWnd 对象检索窗口矩形,但它将通过使用这些坐标填充 RECT 结构来实现。因此,您需要创建一个RECT 结构并将指向它的指针传递给GetWindowRect 函数。

值得一提的是,API 接受指向 RECT 结构的指针,以便与 Win32 完全兼容。 CRect MFC class实际上继承 SDK 定义的RECT 结构,因此您可以在这里互换使用CRect 对象。这很好,因为 CRect 提供了可以更轻松地操作矩形的成员函数。

示例代码:

CWnd* pwndParent = this->GetParent();

CRect rc;
pwndParent->GetWindowRect(&rc);

// rc now contains the rectangle of your window!

请注意,GetWindowRect 函数将返回窗口的屏幕 坐标。这通常不是您想要的,除非您试图在屏幕上重新定位窗口。屏幕坐标很难使用,因为它们是相对于整个虚拟屏幕而言的,在多显示器配置中它可能具有负坐标。此外,如果您尝试使用屏幕坐标确定窗口的大小,您将在屏幕上获得窗口的整个大小,包括其非客户区(如标题栏、最小/最大/关闭按钮等)。

您通常需要的是窗口的客户端 坐标,可通过调用 GetClientRect function 检索以相同的方式。这一次,我们将使用 RECT 结构,因为我们可以:

CWnd* pwndParent = this->GetParent();

RECT rcClient;
pwndParent->GetClientRect(&rcClient);

关于c++ - MFC CWnd 高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35204826/

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