[PRB] Ошибка в реализации функции SCALERECT из <DeviceResolu
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 13.04.06 14:04
Оценка:
Доброго времени суток, коллеги!

inline void SCALERECT(RECT rc)
{
#ifndef _DRA_ADJUSTABLE_RESOLUTION
    rc.left = SCALEX(rc.left);
    rc.right = SCALEX(rc.right);
    rc.top = SCALEY(rc.top);
    rc.bottom = SCALEY(rc.bottom);
#else // _DRA_ADJUSTABLE_RESOLUTION
    int nLogPixelsX = LogPixelsX();
    int nLogPixelsY = LogPixelsY();
    rc.left = SCALEX(rc.left, nLogPixelsX);
    rc.right = SCALEX(rc.right, nLogPixelsX);
    rc.top = SCALEY(rc.top, nLogPixelsY);
    rc.bottom = SCALEY(rc.bottom, nLogPixelsY);
#endif // _DRA_ADJUSTABLE_RESOLUTION
}

Обратите внимание, что подлежащий масштабированию прямоугольник передается в функцию по значению, поэтому эффект от ее вызова будет нулевым. Необходимое исправление очевидно:

inline void SCALERECT(RECT& rc)
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.