好的,所以我有一个自定义rect函数。自定义矩形如下:

typedef struct tagRECTEx{
// long left;
// long top;
// long right;
// long bottom;
RECT dimensions;

int width()) {
    return dimensions.right-dimensions.left;
}
int height(){
    return dimensions.bottom - dimensions.top;
}

} RectEx;

现在,而不是让我们说:
RECT windowrect;
windowrect = GetWindowRect(hWnd,&windowrect);

我希望它是这样的:
RectEx windowrectex;
windowrect = GetWindowRect(hWnd,&windowrectex);

....

现在它将无法编译,因为它无法将rectex转换为tagRECT,好吧,我明白了。

因此,在过去的几天里,我一直在搜索自定义的强制转换和替代运算符。

我什至试图实现类似的东西:
GetWindowRect(hWnd, (RectEx)&windowrectex);

但不管我在做什么,我只是不知道如何使它工作。

我想使用自己的rect结构,因为它将自动为我获取rect的宽度和高度,而不是执行rect.right-rect.left等。

如果您需要有关此或任何其他信息,请告诉我。

谢谢

最佳答案

由于GetWindowRectLPRECT作为第二个参数,因此无法传递RectEx

您可以使用RectEx做什么,可以按如下方式重载typecasting运算符

operator LPRECT () const
{
   return &dimensions;
}

但是,由于不希望的类型转换,不建议重载类型转换。仅在确定时才这样做。

09-28 08:46