Как правильно получить RECT окна в КЛИЕНТСКИХ координатах?
От: EyeOfHell  
Дата: 18.07.05 15:14
Оценка:
День добрый.

Часто встает задача получить RECT какого-либо дочернего окна (чаше всего — control'а) для того чтобы сделать ему MoveWindow(), InvalidateRect() ну или еще что-нибудь хорошее. Минорная проблема заключается в том, что функция GetWindowRect для получения RECT окна возвращает глобальные координаты, а для MoveWindow() и прочих координаты нужны локальные. В результате получается некий монструозный код:


RECT rtChild;
::GetWindowRect(hChild, &rtChild);
POINT ptTopLeft;
ptTopLeft.x = rtChild.left;
ptTopLeft.y = rtChild.top;
::ScreenToClient(hParent, &ptTopLeft);
::OffsetRect(&rtChild, ptTopLeft.x-rtChild.left, ptTopLeft.y-rtChild.top);


Нельзя ли то же самое сделать в меньшее количество команд? Есть подозрение, что я не знаю какой-то очевидной вещи -_-.

С уважением, Око.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.