обновление окна

Тема в разделе "WASM.WIN32", создана пользователем valix7, 24 дек 2006.

  1. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    Привет!
    как сделать чтоб на время окно не обновлялось(перерисовка), пробывал LockWindowUpdate но с ней вообще глюки, это надо чтоб окно не моргало когда на ней рисовали... Заранее спасибо!
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Код (Text):
    1. lock_update = 1;
    2.  
    3. case WM_PAINT:
    4. if(lock_update) ValidateRect(hW,0);
    5. else{
    6.  /* ... */
    7. }
    8.  
    9. case WM_ERASEBKGND:
    10. if(!lock_update){
    11.  /* ... */
    12. }
    13. return 1;
     
  3. ViCooper

    ViCooper Victor

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    26
    Попробуй старый способ, помоему двойная буферизация называца. На эту тему в MSDN примеры есть. Приблезительно так:

    1 Создаеш буфер:
    - h = GetDC( NULL );
    - h1 = CreateComportableDC( h, ...);
    - bn = CreateComportableBitmap( h, ...);
    - ReleaseDC( h );
    - bo = SelectObject( h1, bn );
    2 Рисуеш в нем че нада.
    - DoMyPicture( h1 );
    3 Копируеш рисунок из буфера в своё окно:
    - h2 = GetDC( hWnd );
    - BitBlt(...);
    - ReleaseDC( h2 );
    4 Удаляш буфер:
    - SelectObject( h1, bo );
    - DeleteObject( bn );
    - DeleteDC( h1 );

    И ещо, чтобы заработало действительно немигая ( ну почти совсем ), рисуй не по сообщению WM_PAINT а вызывай какунибудь свою DoMyPicture() када нада рисунок обновить, и окно не очищяй по WM_ERASEBKGND. Кстати при изменении размеров окна DoMyPicture вызывать придется.

    case WM_PAINT:
    return TRUE;
    break;
    case WM_ERASEBKGND:
    return TRUE;
    break;
     
  4. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    WM_SETREDRAW(TRUE/FALSE,0)
     
  5. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    спасибо всем!