Главная страница
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.012 c
15-1243883957
Petr V. Abramov
2009-06-01 23:19
2009.08.02
посоветйте клиент аськи


15-1243369805
Юрий
2009-05-27 00:30
2009.08.02
С днем рождения ! 27 мая 2009 среда


2-1244453232
nickrus
2009-06-08 13:27
2009.08.02
Indy vs. TClientSocket


15-1243963640
Сергей М.
2009-06-02 21:27
2009.08.02
Google Chrome и сертификаты подлинности


15-1243697653
oldman
2009-05-30 19:34
2009.08.02
Вопрос москвичам (очень надо). А до Алтуфьево метро пустили?