Что значит очистить? Залить каким-то цветом? Тогда GetClientRect+GetDC+FillRect/FillRgn.
Или просто инициировать перерисовку? Тогда для MFC Invalidate+UpdateWindow, а для API InvalidateRect.
Здравствуйте, iaiel, Вы писали:
I>Что значит очистить? Залить каким-то цветом? Тогда GetClientRect+GetDC+FillRect/FillRgn.
А тормозить не будет если я делаю это в WM_PAINT???
I>Или просто инициировать перерисовку? Тогда для MFC Invalidate+UpdateWindow, а для API InvalidateRect.
Для API, когда я делаю InvalidateRect в WM_PAINT(а мне там и надо) то все мегает. Можно это как — нибудь обойти???
Здравствуйте, Repdiablo, Вы писали:
R>А тормозить не будет если я делаю это в WM_PAINT???
Что-то не понял, почему должна тормозить заливка.
R>Для API, когда я делаю InvalidateRect в WM_PAINT(а мне там и надо) то все мегает. Можно это как — нибудь обойти???
Можно, сделать двойную буферизацию.
Примерно так.
HDC hdc=GetDC(hwnd); //контекст перерисовки
HDC mem_hdc=CreateCompatibleDC(hdc); //контекст в памяти, куда и будем рисовать
GetClientRect(hwnd,&rect);
HBITMAP bmp=CreateCompatibleBitmap(hdc,rect.right,rect.bottom); //битмап для контекста
HBITMAP _bmp=(HBITMAP)SelectObject(mem_hdc,bmp);
FillRect(mem_hdc,&rect,brush);
// ... вся остаольная твоя перерисовка
BitBlt(hdc,0,0,rect.right,rect.bottom,mem_hdc,0,0,SRCCOPY);
SelectObject(mem_hdc,_bmp);
DeleteObject(bmp);
ReleaseDC(hwnd,hdc);
DeleteDC(mem_hdc);
Но учти, если у тебя в перерисовке будут интенсивный вычисления, то ты не увидешь динамику прорисовки.
Здравствуйте, Slicer [Wirkwood], Вы писали:
SW>Тормозить не должно. И тебе нужен (выводя из твоего постинга) именно этот вариант (FillRect). SW>Двойная буферизация рулез фарева
SW>Slicer
А подскажите как использовать FillRgn, как мне этот регион получить.
Простите я просто ужасно боюсь этих регионов!
Здравствуйте, iaiel, Вы писали:
I>Здравствуйте, Repdiablo, Вы писали:
R>>А тормозить не будет если я делаю это в WM_PAINT??? I>Что-то не понял, почему должна тормозить заливка.
I> R>>Для API, когда я делаю InvalidateRect в WM_PAINT(а мне там и надо) то все мегает. Можно это как — нибудь обойти??? I>Можно, сделать двойную буферизацию. I>Примерно так.
Спасибо большое, я попробовал все работает. Только я понял что мне надо не все а регион обновлять.
А как заполнить стректуру HRGN не понял.