Использование необрезанного контекста устройства
Если вы абсолютно уверены, что ваш элемент управления не красит вне прямоугольника клиента, вы можете реализовать небольшое, но обнаруживаемое увеличение скорости, отключив вызов IntersectClipRect
, сделанный COleControl
этим. Для этого удалите флаг clipPaintDC из набора флагов, возвращаемых COleControl::GetControlFlags. Например:
DWORD CMyAxOptCtrl::GetControlFlags()
{
DWORD dwFlags = COleControl::GetControlFlags();
dwFlags &= ~clipPaintDC;
return dwFlags;
}
Код для удаления этого флага создается автоматически при выборе параметра контекста неотрезанного устройства на странице "Элемент управления Параметры" при создании элемента управления с помощью мастера управления ActiveX MFC.
Если вы используете активацию без окон, эта оптимизация не влияет.