MFC CWnd 高度和宽度
MFC CWnd height and width
你如何得到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
结构的指针(由于历史原因,"LP"前缀实际上代表"长指针"(。
GetWindowRect
函数将检索CWnd
对象的窗口矩形,但它将通过使用这些坐标填充RECT
结构来实现。因此,您需要创建一个 RECT
结构,并将指向它的指针传递给 GetWindowRect
函数。
值得一提的是,API 接受指向 RECT
结构的指针,以便与 Win32 完全兼容。CRect
MFC 类实际上继承自 SDK 定义的RECT
结构,因此可以在此处互换使用 CRect
对象。这很好,因为CRect
提供了成员函数,可以更轻松地操作矩形。
示例代码:
CWnd* pwndParent = this->GetParent();
CRect rc;
pwndParent->GetWindowRect(&rc);
// rc now contains the rectangle of your window!
请注意,GetWindowRect
函数将返回窗口的屏幕坐标。这通常不是您想要的,除非您尝试在屏幕上重新定位窗口。屏幕坐标很难处理,因为它们相对于整个虚拟屏幕,在多显示器配置中可能具有负坐标。此外,如果您尝试使用窗口的屏幕坐标确定窗口的大小,您将获得屏幕上窗口的整个大小,包括其非工作区(如标题栏、最小/最大/关闭按钮等(。
您通常想要的是窗口的客户端坐标,可以通过以相同的方式调用 GetClientRect
函数来检索。这一次,我们将使用 RECT
结构,因为我们可以:
CWnd* pwndParent = this->GetParent();
RECT rcClient;
pwndParent->GetClientRect(&rcClient);
答案是你使用 GetWindowRect
.
CWnd* parent = this->GetParent();
CRect size;
parent->GetWindowRect(&size);
如果你问为什么要这样做,我可以想到两个答案:
- MFC很老(我怀疑比一些读这篇文章的人还要老(。 在那些日子里,编译器无法按值处理返回的结构。 从那时起"向后兼容"。
- MFC是(或者至少最初是(Windows API函数的一个非常薄的包装器。
好吧,我想出了我相信的答案。这里为任何关心了解的人...
CRect rc_total_window;
this->GetWindowRect(rc_total_window);
其中"this"是 CWnd* 对象。再次感谢所有的历史和解释。它有助于了解为什么事情是这样的,这样您就可以确定自己没有做错事;当方法与现代语言课程中学到的方法不同时尤其有帮助。
- C++:如何根据地形高度更新玩家身高?
- 如何更改QComboBox项目的高度大小?
- 更改高度贴图,使其在 4x4 网格上显示 16 个 hieghtmap
- 我试图用这段代码找到二叉树的高度,但它一直返回 0,有人可以告诉我为什么吗?
- C++:如何计算二叉树中其值模块高度小于 2 的节点数?
- 如何使用 C++ gdal 库将栅格地理从 EGM96 转换为 WGS84 椭球体高度基准面
- 从具有父指针和左子树和右子树高度的树中删除
- 程序输入名称和高度并显示它。我不知道如何显示列表中最高人的姓名和身高
- 我正在尝试创建一个 C++ 贪吃蛇游戏,但我似乎无法绘制第二个高度边框,我该如何解决这个问题?
- 计算树高度的函数
- 尝试创建一个程序来查找非二叉树的高度.最终得到一个很长的循环,没有答案
- 计算BST返回-1的高度混淆
- 使用递归计算一个函数中的高度和大小
- 如何从2D数组为QHeightMapSurfaceDataProxy创建高度图以显示2D傅立叶变换结果
- 在库中创建CWnd
- 接受来自键盘的树节点以确定其高度
- 在 C++ 中使用平展数组语法,崩溃取决于宽度/高度
- 在一行中初始化指针(新uint8_t[高度*宽度*3])
- 在高度模板化的库中进行代码混淆
- MFC CWnd 高度和宽度