Здравствуйте, Naimit, Вы писали:
N>ActiveX создан с помощью ATL.
N>В функции вызываемой по таймеру я хочу перерисовывать часть окна (код),
N>N> RECT re;
N> GetClientRect(&re);
N> CRect rect(re);
N> HRESULT hr = InvalidateRect(NULL, TRUE);
N> if ( hr != S_OK ) ....;
N> else ....;
N>
N>Получаю всегда только hr!=0, и перерисовывает он всё окно.
N>Если кто сталкивался или знает, отзовитесь.
В данном случае в InvalidateRect надо не NULL передавать, а указатель на re. А NULL говорит о том, что надо всю клиентскую область обновить.
И InvalidateRect не HRESULT возвращает, а BOOL.
Всё в MSDN написано.