Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Рисование в окне из другого потока [D7, WinXP]


Dmitry S ©   (2008-06-11 19:51:00) 

Есть окно в основном потоке.
Есть дополнительный поток, который обрабатывает данные и выводит их на окно.

При этом используется DoubleBuffered, поэтому данные сперва отрисовываются в битмап, а потом уже на окно.

Как потоко-безопасно это сделать?

Пока у меня только одная мысль:
Критическая секция на буфер окна + специальное сообщение окну, что буфер изменился...
Какие еще будут идеи?


Leonid Troyanovsky   (2008-06-15 10:52:00) [1]


> Dmitry S ©   (11.06.08 19:51)  

> Какие еще будут идеи?

Если в целевой системе один процессор, то все это overhead.
http://dtf.ru/articles/read.php?id=39888

--
Regards, LVT.


Dmitry S   (2008-06-13 20:03:00) [2]


> Игорь Шевченко ©

Мультипликация вобщем.


Игорь Шевченко   (2008-06-13 15:27:00) [3]

Dmitry S ©   (13.06.08 14:29) [7]

А зачем их так часто рисовать ? Кино, что ли ?
Рисуй раз в определенный интервал, ну хоть раз в секунду или в 2..10


Dmitry S   (2008-06-13 14:29:00) [4]


> Рихтер таких примеров приводит довольно много и без всяких
> DoubleBuffered

Данные меняются ~25 раз в секунду, DoubleBuffered нужно, чтобы не моргало :)


Игорь Шевченко   (2008-06-11 22:49:00) [5]


> Так VCL не использую... Самосозданное окно, и поток:)


> Есть дополнительный поток, который обрабатывает данные и
> выводит их на окно.
>
> При этом используется DoubleBuffered, поэтому данные сперва
> отрисовываются в битмап, а потом уже на окно.


а зачем так сложно ? Поток что-то просчитал и сказал UpdateWindow - вызвалась в нужный момент времени WM_PAINT и нарисовала.
Рихтер таких примеров приводит довольно много и без всяких DoubleBuffered


Сергей М.   (2008-06-11 21:14:00) [6]

Не только, но в т.ч. и в п.о.


Dmitry S   (2008-06-11 21:12:00) [7]


> Пользовать синхронные сообщения

синхронные - это SendMessage?


Сергей М.   (2008-06-11 21:10:00) [8]


> Какие еще будут идеи?


Пользовать синхронные сообщения  окну и выкинуть нафих крит.секцию)


Dmitry S   (2008-06-11 20:00:00) [9]

Так VCL не использую... Самосозданное окно, и поток:)


Игорь Шевченко   (2008-06-11 19:56:00) [10]


> Как потоко-безопасно это сделать?


через Synchronize ?

А причем тут, кстати, WinAPI ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо