初学者提问。
在 Win32API 中,::GetClientRect
的第二个参数是 LPRECT
,但它可以接收 CRect
和 CRect*
。
我试图查看 LPRECT
的定义,但它似乎只是一个普通的结构体指针:
typedef struct tagRECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
CRect
继承了 tagRECT
:
class CRect :public tagRECT {...}
使用MFC,
CWnd::GetClientRect
的用法相同:CRect rect;
GetClientRect(&rect); // works
GetClientRect(rect); // works too.
这怎么可能呢?如果我错过了一些C++的基本概念,请告诉我。
CRect
类有一个operator LPRECT()
类型转换函数,将其服务于单个成员。 - WhozCraig