Я хочу написать функцию, которая должна установить область отсечения на DC, но восстановить все существующие области отсечения на DC, когда это будет сделано.
Итак, я нашел GetClipRgn
это звучит как то, что я хочу, но кажется странным.Я не смог найти никаких примеров его использования, и Петцольду было нечего предложить.
Я придумал следующее:
void DrawStuff( HDC hDC )
{
HRGN restoreRegion = CreateRectRgn( 0, 0, 0, 0 );
if (GetClipRgn( hDC, restoreRegion ) != 1)
{
DeleteObject( restoreRegion );
restoreRegion = NULL;
}
//
// Set new region, do drawing
//
SelectClipRgn( hDC, restoreRegion );
if (restoreRegion != NULL)
{
DeleteObject( restoreRegion );
}
}
Мне кажется странным, что мне нужно создатьрегион, чтобы получить текущий регион.
Это правильное использование?
Есть ли лучший способ добиться того же эффекта?