CStatic::Create函数参数RECT类型匹配问题

m_Static.Create("动态创建静态文本",WS_CHILD|WS_VISIBLE,CRect(0,0,200,200),this,1001);
问题1:上面代码中CRect(0,0,200,200)是CRect类的构造函数吗,构造函数没有返回值怎么可以作为Create函数的参数?
下面是Create函数的原型
BOOL Create(LPCTSTR lpszText, DWORD dwStyle,const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff);
问题2:CRect(0,0,200,200)怎么可以与RECT结构体的引用rect匹配?CRect(0,0,200,200)不是RECT结构体类型啊

  1. 是的,CRect(0,0,200,200)是CRect类的构造函数之一,用于创建一个左上角坐标为(0, 0),右下角坐标为(200, 200)的矩形。虽然构造函数没有返回值,但它可以返回一个对象,而这个对象可以作为Create函数的参数传递。

  2. CRect是RECT结构体的一个C++类封装,它包含了RECT结构体的所有成员变量,并提供了一些成员函数用于操作这些成员变量。CRect(0,0,200,200)创建的对象是一个CRect类型的对象,但它的成员变量与RECT结构体的成员变量完全相同,因此可以通过类型转换或者引用传递的方式与RECT结构体的引用匹配。在这里,使用了CRect对象的一个成员函数GetRect()将CRect对象转换为RECT结构体,从而传递给Create函数。

CRect(。。。)这是初始化,等同于 auto x=int(10);