Нужно ли "кешировать" WM_PAINT?

Тема в разделе "WASM.BEGINNERS", создана пользователем da-007, 20 янв 2008.

  1. da-007

    da-007 New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    13
    День добрый.

    Такой вопрос... Предположим, у нас есть главное окно программы... На нем - более сотни дочерних окошек, которые выводят какую-то информацию... Логично предположить, что если эти окошки выводят, условно, "сложную" информацию (ну, скажем... не просто TextOut, а чегой-то, связанное с графикой) + содержимое этих окошек меняется достаточно редко... То, наверное, стоит выставить этим окошкам стиль SS_BITMAP, и создавать-назначать им картинку, при изменении их содержимого, сводя обработку WM_PAINT к BitBlt?

    Соответственно, вопроса два:
    а. Целесообразно ли такое "кеширование"?
    б. Если на вопрос "а" ответ "да", то где проходит грань между "какие окошки надо кэшировать, а какие - нет"?
     
  2. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    М-да..
    Ну давай начнем с того, что оптимизация графики (ее основы), уже давно известны.
    1.Работать через контекст памяти:самый быстрый вывод средствами АПИ-блитовые операции. Рисование в контексте-способ избежать мерцания. :) Вот и все.Быстрее не будет.
    2.Самому контролировать регионы отсечения,для перерисовки НУЖНОГО места окна.В том случае,если винде не доверяешь.Используется редко,т.к. гемморно и не всегда оправдано.Но иногда бывает нужным :)
    3.Использовать обычную оптимизацию программиста (т.е. все битмапы и контесты-готовит заранее, а не в процессе рисования)
    Вот и все. Все остальное-"кэшироваие,мапирование,буфферизация,сортировка" и прочие слова,которые вообще к графике отношения не имеют-бурная фантазия автора и от лукавого. :)

    Что касается "более сотен окошек"-хм.Страный подход к дизайну.Может стоит рисовать и обновлять 100 фрагментов в ОДНОМ окне? Ну да ладно,может автору видней.Так вот-указание расширеного стиля статическому элементу SS_BITMAP-ни в коем случае не избавит его от сообщения WM_PAINT! Ну никак.Как впрочем и другое любое окно,любого стиля.А теперь подумай-если все одно,минимум раз прийдет сообщение WM_PAINT-будет ли "кэширование"? :)