Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
15-1243512133
oldman
2009-05-28 16:02
2009.08.02
Сбылась мечта идиота...


2-1244444905
LDV
2009-06-08 11:08
2009.08.02
CF_DIB и CF_BITMAP


2-1244141574
berezne
2009-06-04 22:52
2009.08.02
Как програмно обработать OnClick&


4-1213516366
TForumHelp
2008-06-15 11:52
2009.08.02
Ресурсы в EXE-файле - VersionInfo


15-1243602612
Игорь
2009-05-29 17:10
2009.08.02
ASUS Eee PC 900




   Наверх