Есть бихавиор, который рисует на элементе.
Пытаюсь рисовать только в той области элемента, которой был сделан InvalidateRect.
Если обновляемый регион состоит из двух прямоугольников, например левый верхний и нижний правый:
void invalidate( dom::element e )
{
HWND hwnd = e.get_element_hwnd( false );
RECT const bbox = e.get_location( VIEW_RELATIVE | CONTENT_BOX );
int const w = width ( bbox ) / 3;
int const h = height( bbox ) / 3;
// левый верхний угол
RECT const a = { bbox.left, bbox.top, bbox.left + w, bbox.top + h };
InvalidateRect( hwnd, &a, FALSE );
// правый нижний угол
RECT const b = { bbox.right - w, bbox.bottom - h, bbox.right, bbox.bottom };
InvalidateRect( hwnd, &b, FALSE );
}
то при выполнении вот этого:
HRGN clip = CreateRectRgn( 0, 0, 0, 0 );
GetRandomRgn( params.hdc, clip, SYSRGN );
RECT rc = {};
int type = GetRgnBox( clip, &rc );
type всегда равен SIMPLEREGION. И нет возможности выцепить по отдельности каждый из прямоугольников.
Как бы это сделать?