хорошо, так что у меня есть собственная функция прямоугольника. Пользовательский прямоугольник выглядит следующим образом:
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.right-rect.left и т. Д.
Если вам нужна дополнительная информация об этом или что-то еще, пожалуйста, дайте мне знать.
благодарю вас
поскольку GetWindowRect
принимает LPRECT
как второй параметр, нет возможности передать RectEx
,
Что вы можете сделать, чтобы использовать RectEx
Вы можете перегрузить оператор приведения типов следующим образом
operator LPRECT () const
{
return &dimensions;
}
Однако перегрузка типов не рекомендуется из-за нежелательного преобразования типов. Делайте только тогда, когда вы уверены в этом.
Просто передайте RECT
изнутри вашего RectEx
,
RectEx windowrectex;
windowrect = GetWindowRect(hWnd,&windowrectex.dimensions);
Кроме того, вы можете сделать RectEx
наследовать от RECT
и удалить dimensions
,
Или добавьте оператор преобразования, operator RECT*() const
как предлагает дбасик. Тогда вы бы использовали:
windowrect = GetWindowRect(hWnd,windowrectex);