![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рисование в окне из другого потока [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 ?