Мерцание текста

Тема в разделе "WASM.BEGINNERS", создана пользователем Mihey, 12 фев 2007.

  1. Mihey

    Mihey New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2007
    Сообщения:
    9
    Программа на си. Задаю кол-во панелей, их размеры и указываю каждой панеле что ей делать (конкретнее думаю тут смысла нет объяснять). Есть панель которая занимается текстом. Текст перемещается. И при перемещении текста возникает его мерцание довольно сильное. Мб ктонибудь подскажет как можно решить эту проблему? Нарыл в инете инфу об SetVisualPage и SetActivePage, но они используются для всего экрана, а не для части..
    Заранее благодарен за любые ответы
     
  2. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ты это про DOS?
    задать активную страницу для части экрана нельзя
    а текст мерцает, потому что ты его стираешь, а потом снова перерисовываешь, наверное
     
  3. Mihey

    Mihey New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2007
    Сообщения:
    9
    под win32. писал прогу не я, а человек который писал программу говорит что скорее всего без DirectX не обойтись. а насчет перерисовки... помойму там не перерисовывается, текст смещается на 1 пиксель за 1 такт и вот примерно через 10 пикселей мерцает. а это исправление довольно срочно надо. может быть ктонибудь подскажет, желательно с примеров кода. могу произвести умеренную плату..
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Mihey
    Туфта, GDI может рисовать без всяких мерцаний.
    IMHO он не может сместиться без перерисовки.
    Посмотри может надо вначале рисовать на внеэкранный буфер, потом вызывать InvalidateRect. Которое вызывает WM_PAINT.
    А в WM_PAINT:
    BeginPaint
    BitBlt - c внеэкранного на экран.
    EndPaint

    Ну это конечно если отображаешь текст в панелях сам. А не с помощью каких-то спец. контролов.
     
  5. Mihey

    Mihey New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2007
    Сообщения:
    9
    Спасибо за ответ, попробуем. будет время, чекни мыло
     
  6. Mihey

    Mihey New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2007
    Сообщения:
    9
    Буду очень благодарен, если еще ктонибудь подскажет по моему вопросу :)
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    лучше не перемещать попискельно, а перерисовать текст заново.
    или я чето в смысл темы немного не въехал
     
  8. Mihey

    Mihey New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2007
    Сообщения:
    9
    Кто сможет быстро и недорого исправить этот косяк? стучите в асю 500737
     
  9. CodeTao

    CodeTao Евгений

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    177
    Адрес:
    штаты
    А как передвигаются панели? Если с использованием MoveWindow, то надо последний параметр установить на FALSE, а после отпусканее заголовка послать WM_PAINT - что бы на всякий случай прорисовать текст... этот способ не гарантирует корректное отображение текста при перетаскивании. А DDraw толковая идея, что бы не говорили иногда GDI таки мерцает(при BitBlt точно, тока пока он работает с контекстом, стоит его использовать в DirextX - и о чудо, мерцаний нет...) и переход прорисовки на DDraw снимает эту проблему, но использовать в этом случае я считаю не целесобразно. Другое решение - зачем отображать содержимое экрана при передвижении - сделать невидемым контрол отображающий текст.