Текущий архив: 2015.01.11;
Скачать: CL | DM;
Вниз
Форма в доп. потоке Найти похожие ветки
← →
Eraser © (2012-02-12 21:52) [0]Нужно отображать более-менее сложную форму из доп. потока. Есть ли какой-то способ использовать для этого стандартные формы, либо придется "писать" форму исключительно с нуля на win API вообще без VCL?
← →
Сергей М. © (2012-02-12 21:58) [1]
> Нужно отображать .. из доп. потока
Т.е. основной поток у тебя настолько из себя шибко занятый, что у него нет ни кванта времени чтобы отобразить ту самую форму ?
← →
Eraser © (2012-02-12 22:00) [2]> [1] Сергей М. © (12.02.12 21:58)
он на другом десктопе.
← →
Сергей М. © (2012-02-12 22:07) [3]
> он на другом десктопе
И переключиться при необходимости в нужное время на нужный десктоп у осн.потока тоже нет никакой возможности ?
← →
Eraser © (2012-02-12 22:09) [4]увы, нету.
The SetThreadDesktop function will fail if the calling thread has any windows or hooks on its current desktop (unless the hDesktop parameter is a handle to the current desktop).
← →
Сергей М. © (2012-02-12 22:23) [5]Полагаю что в такой ситуации манипулирование станд. VCL-формой из доп.потока должно быть безопасным, разумеется при условии что эту обслуживание событий окна этой формы полностью возьмет на себя доп.поток и в эту форму не полезет ни один иной поток того же самого "другого" десктопа.
← →
Eraser © (2012-02-12 22:31) [6]Да в том то и дело, что задача уж очень нетривиальная, есть надежда, что какой-то кулибин изобрел оснастку для полного изолирования формы. Но беда в том, что уж больно много в VCL различных глобальных синглтонов вроде Screen, Application и т.п. То есть очевидного способа привязать новую форму к другой очереди сообщений я не вижу. Возможно у кого-то есть решение, потому и спросил. А иначе скорее всего будет просто запускаться отдельный экземпляр приложения на нужном десктопе и отображать форму.
← →
Сергей М. © (2012-02-12 22:38) [7]
> очевидного способа привязать новую форму к другой очереди
> сообщений я не вижу
С синглтонами теми самыми, конечно, проблема будет немалая.
> какой-то кулибин изобрел оснастку для полного изолирования
> формы
Вряд ли.
← →
Dimka Maslov © (2012-02-13 10:13) [8]Я один раз попробовал так сделать. Просто в потоке создавалась обыкновенная vcl форма. Не получилось. Форма то не отображалась вообще, то висла сама, то вешала всё приложение. Посоветовал бы рассмотреть вариант второго процесса, тесно взаимодействующего с первым.
← →
Дмитрий Белькевич (2012-02-13 10:50) [9]>А иначе скорее всего будет просто запускаться отдельный экземпляр приложения на нужном десктопе и отображать форму.
Зачем всё приложение...
Форму - в отдельный экзешник + ipc с основным приложением.
← →
Leonid Troyanovsky © (2012-02-13 11:16) [10]
> Eraser © (12.02.12 22:31) [6]
Ограничений много.
http://groups.google.com/group/borland.public.delphi.nativeapi/msg/f392e4729c58ce8a
--
Regards, LVT.
← →
CRLF (2012-02-13 11:24) [11]
> Форму - в отдельный экзешник + ipc с основным приложением.
В своё время стояла подобная задача, решал так же.
← →
sniknik © (2012-02-13 11:42) [12]а зачем отдельный экзешник? в том же, просто запускать как нибудь, с параметрами например, чтобы знало, что подчиненное.
← →
Eraser © (2012-02-13 15:30) [13]> [12] sniknik © (13.02.12 11:42)
Да, на этом варианте и остановился.
← →
Styx (2012-02-13 16:02) [14]А если DLL? Вроде как все проблемы с формами в DLL как раз из-за того, что в данном случае как раз и требуется?
← →
Eraser © (2012-02-13 16:47) [15]> [14] Styx (13.02.12 16:02)
Возможно это вариант конечно частично бы подошел при должном упорстве, но думаю не решает всех проблем, т.к. будет глючить местами и более трудоемко, чем [12].
Страницы: 1 вся ветка
Текущий архив: 2015.01.11;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.005 c