-
Есть окно в основном потоке. Есть дополнительный поток, который обрабатывает данные и выводит их на окно.
При этом используется DoubleBuffered, поэтому данные сперва отрисовываются в битмап, а потом уже на окно.
Как потоко-безопасно это сделать?
Пока у меня только одная мысль: Критическая секция на буфер окна + специальное сообщение окну, что буфер изменился... Какие еще будут идеи?
-
> Как потоко-безопасно это сделать?
через Synchronize ?
А причем тут, кстати, WinAPI ?
-
Так VCL не использую... Самосозданное окно, и поток:)
-
> Какие еще будут идеи?
Пользовать синхронные сообщения окну и выкинуть нафих крит.секцию)
-
> Пользовать синхронные сообщения
синхронные - это SendMessage?
-
Не только, но в т.ч. и в п.о.
-
> Так VCL не использую... Самосозданное окно, и поток:)
> Есть дополнительный поток, который обрабатывает данные и > выводит их на окно. > > При этом используется DoubleBuffered, поэтому данные сперва > отрисовываются в битмап, а потом уже на окно.
а зачем так сложно ? Поток что-то просчитал и сказал UpdateWindow - вызвалась в нужный момент времени WM_PAINT и нарисовала. Рихтер таких примеров приводит довольно много и без всяких DoubleBuffered
-
> Рихтер таких примеров приводит довольно много и без всяких > DoubleBuffered
Данные меняются ~25 раз в секунду, DoubleBuffered нужно, чтобы не моргало :)
-
Dmitry S © (13.06.08 14:29) [7]
А зачем их так часто рисовать ? Кино, что ли ? Рисуй раз в определенный интервал, ну хоть раз в секунду или в 2..10
-
> Игорь Шевченко ©
Мультипликация вобщем.
-
|