首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC CWnd高度和宽度

MFC CWnd高度和宽度
EN

Stack Overflow用户
提问于 2016-02-04 23:21:07
回答 3查看 11.4K关注 0票数 3

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

代码语言:javascript
复制
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?争论的内容是什么?我指的是什么?我已经有了我想要找到的对象的大小...只要给我尺寸就行了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-04 23:27:43

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

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

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

示例代码:

代码语言:javascript
复制
CWnd* pwndParent = this->GetParent();

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

// rc now contains the rectangle of your window!

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

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

代码语言:javascript
复制
CWnd* pwndParent = this->GetParent();

RECT rcClient;
pwndParent->GetClientRect(&rcClient);
票数 8
EN

Stack Overflow用户

发布于 2016-02-04 23:28:08

答案是您使用GetWindowRect

代码语言:javascript
复制
CWnd* parent = this->GetParent();
CRect size;
parent->GetWindowRect(&size);

如果你问为什么要这样做,我可以想到两个答案:

  1. MFC非常古老(我猜比一些阅读本文的人还老)。在那些日子里,编译器不能处理按值返回结构。从那时起,"backwards compatability".
  2. MFC是(或者至少最初是) Windows API函数上的一个非常薄的包装器。“
票数 6
EN

Stack Overflow用户

发布于 2016-02-04 23:27:56

好吧,我想出了我的答案我相信。对于那些想知道的人来说。

代码语言:javascript
复制
CRect rc_total_window;
this->GetWindowRect(rc_total_window);

其中'this‘是一个CWnd*对象。再次感谢你的历史和解释。它有助于了解为什么事情是这样的,这样您就可以确定您没有做错什么;特别是当方法与现代语言课程中所学的方法不同时,这一点尤其有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35204826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档