Здравствуйте, SpLove, Вы писали:
SL>Помогите сделать нормальную перерисовку
. Сделал как показано не ниже но все передергивается и моргает. Ещё вопрос кто-нибудь делал прокрутку по Петзолду? Как избавиться от отступа сверху?? Знаю место где оно задается но как убрать????
Чтот такое "Петзолд" я не знаю, но рисование без маргания вот
void DrawOffScreen(RECT rcPaint)
{
PAINTSTRUCT ps;
::BeginPaint(hWnd, &ps);
HDC hDC = ::CreateCompatibleDC(ps.m_hDC);
//HBITMAP hBmp = ::CreateCompatibleBitmap(ps.m_hDC, MaxWidth+1, MaxHeidth+1);
HBITMAP hBmp = ::CreateCompatibleBitmap(ps.m_hDC, rcPaint.right - rcPaint.left, rcPaint.bottom - rcPaint.top);
HBITMAP hPrevBmp = (HBITMAP)::SelectObject(hDC, hBmp);
// Clearing
HBRUSH brush = CreateSolidBrush(ColorBackGround);
HBRUSH OldBrush = (HBRUSH)SelectObject( hDC, brush);// can store brush
ExtFloodFill(hDC,0,0,ColorBackGround,FLOODFILLBORDER);
//DeleteObject(brush);
//brush = CreateSolidBrush(RGB(255,255,255));
SelectObject( hDC, brush);
DeleteObject(brush);
// shift origin, allows to use window client coords instead of using hBmp-relative coords
::SetWindowOrgEx(hDC, rcPaint.left, rcPaint.top, NULL);
//////////////////////////////////////////
// Draw here
//////////////////////////////////////////
::SetWindowOrgEx(hDC, 0, 0, NULL);
::BitBlt(ps.m_hDC, rcPaint.left, rcPaint.top,
rcPaint.right - rcPaint.left, rcPaint.bottom - rcPaint.top,
hDC, 0, 0, SRCCOPY);
::SelectObject(hDC, hPrevBmp);
::DeleteObject(hBmp);
::DeleteDC(hDC);
::EndPaint(hWnd, &ps);
}