Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
2-1387118291
demi
2013-12-15 18:38
2015.01.11
фильтр в делфи


15-1402511153
0w1
2014-06-11 22:25
2015.01.11
Альтернатива Graphics32 для FireMonkey


1-1329069169
Eraser
2012-02-12 21:52
2015.01.11
Форма в доп. потоке


15-1401375136
WalterWhite
2014-05-29 18:52
2015.01.11
Кириллица в Delphi


2-1386666267
Scott Storch
2013-12-10 13:04
2015.01.11
Оптимизация SELECT-запроса