Re[3]: Клиентская область
От: iaiel  
Дата: 01.04.03 06:54
Оценка: 8 (1)
Здравствуйте, 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);

Но учти, если у тебя в перерисовке будут интенсивный вычисления, то ты не увидешь динамику прорисовки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.