У меня есть собственный API, написанный на C ++ (без MFC), реализованный поверх Win32 API.Мое приложение рисует все окно для каждого вызова WM_PAINT.Есть ли способ, которым я мог бы найти только грязную / неверную область, чтобы я мог оптимизировать свои функции рисования, чтобы рисовать только в представлениях, которые пересекаются с грязной областью.
Я пробовал следующий код между операторами BeginPaint - EndPaintи ужасно провалился.все окно было черным.Если я установлю флаг Optimize в 0, окно будет хорошо рисоваться, но рисование будет слишком медленным.Любые предложения ... ??.
#if Optimize
// get the inval region and pass it down
HRGN invalRegion = CreateRectRgn(0,0,0,0);
int retVal = ::GetClipRgn( myHDC,invalRegion);
Assert (retVal != -1);
if(retVal == 0)
return; // nothing to draw.
else if(retVal == 1)
Draw(invalRegion); // a valid dirty region handle.
else
#endif
Draw(NULL); // this results in drawing calls to all views in the window.