Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.02;
Скачать: CL | DM;

Вниз

Рисование в окне из другого потока   Найти похожие ветки 

 
Dmitry S ©   (2008-06-11 19:51) [0]

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

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

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

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


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


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


через Synchronize ?

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


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

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


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


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


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


 
Dmitry S ©   (2008-06-11 21:12) [4]


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

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


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

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


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


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


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


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


 
Dmitry S ©   (2008-06-13 14:29) [7]


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

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


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

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

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


 
Dmitry S ©   (2008-06-13 20:03) [9]


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

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


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


> Dmitry S ©   (11.06.08 19:51)  

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

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

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2009.08.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.007 c
2-1244101451
kir86975
2009-06-04 11:44
2009.08.02
Почему не правильно работает SetLength?


2-1244388650
zdm
2009-06-07 19:30
2009.08.02
DBLookupCombobox , отоброзить текст без нажатия выпадения меню


2-1244446487
night_light
2009-06-08 11:34
2009.08.02
передача TBitmap в другой поток


15-1244135367
POGiMplayer
2009-06-04 21:09
2009.08.02
Ограничить скорость Интернета.


15-1244014443
darlo
2009-06-03 11:34
2009.08.02
Контроль области памяти