Форум: "WinAPI";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
ВнизРисование в окне из другого потока Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c