Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Форма в доп. потоке


Eraser ©   (2012-02-12 21:52:00) 

Нужно отображать более-менее сложную форму из доп. потока. Есть ли какой-то способ использовать для этого стандартные формы, либо придется "писать" форму исключительно с нуля на win API вообще без VCL?


Eraser   (2012-02-13 16:47:00) [1]

> [14] Styx   (13.02.12 16:02)

Возможно это вариант конечно частично бы подошел при должном упорстве, но думаю не решает всех проблем, т.к. будет глючить местами и более трудоемко, чем [12].


Styx   (2012-02-13 16:02:00) [2]

А если DLL? Вроде как все проблемы с формами в DLL как раз из-за того, что в данном случае как раз и требуется?


Eraser   (2012-02-13 15:30:00) [3]

> [12] sniknik ©   (13.02.12 11:42)

Да, на этом варианте и остановился.


sniknik   (2012-02-13 11:42:00) [4]

а зачем отдельный экзешник? в том же, просто запускать как нибудь, с параметрами например, чтобы знало, что подчиненное.


CRLF   (2012-02-13 11:24:00) [5]


> Форму - в отдельный экзешник + ipc с основным приложением.
В своё время стояла подобная задача, решал так же.


Leonid Troyanovsky   (2012-02-13 11:16:00) [6]


> Eraser ©   (12.02.12 22:31) [6]

Ограничений много.

http://groups.google.com/group/borland.public.delphi.nativeapi/msg/f392e4729c58ce8a

--
Regards, LVT.


Дмитрий Белькевич   (2012-02-13 10:50:00) [7]

>А иначе скорее всего будет просто запускаться отдельный экземпляр приложения на нужном десктопе и отображать форму.

Зачем всё приложение...
Форму - в отдельный экзешник + ipc с основным приложением.


Dimka Maslov   (2012-02-13 10:13:00) [8]

Я один раз попробовал так сделать. Просто в потоке создавалась обыкновенная vcl форма. Не получилось. Форма то не отображалась вообще, то висла сама, то вешала всё приложение. Посоветовал бы рассмотреть вариант второго процесса, тесно взаимодействующего с первым.


Сергей М.   (2012-02-12 22:38:00) [9]


> очевидного способа привязать новую форму к другой очереди
> сообщений я не вижу


С синглтонами теми самыми, конечно, проблема будет немалая.


> какой-то кулибин изобрел оснастку для полного изолирования
> формы


Вряд ли.


Eraser   (2012-02-12 22:31:00) [10]

Да в том то и дело, что задача уж очень нетривиальная, есть надежда, что какой-то кулибин изобрел оснастку для полного изолирования формы. Но беда в том, что уж больно много в VCL различных глобальных синглтонов вроде Screen, Application и т.п. То есть очевидного способа привязать новую форму к другой очереди сообщений я не вижу. Возможно у кого-то есть решение, потому и спросил. А иначе скорее всего будет просто запускаться отдельный экземпляр приложения на нужном десктопе и отображать форму.


Сергей М.   (2012-02-12 22:23:00) [11]

Полагаю что в такой ситуации манипулирование станд. VCL-формой из доп.потока должно быть безопасным, разумеется при условии что эту обслуживание событий окна этой формы полностью возьмет на себя доп.поток и в эту форму не полезет ни один иной поток того же самого "другого" десктопа.


Eraser   (2012-02-12 22:09:00) [12]

увы, нету.
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:07:00) [13]


> он на другом десктопе


И переключиться при необходимости в нужное время на нужный десктоп у осн.потока тоже нет никакой возможности ?


Eraser   (2012-02-12 22:00:00) [14]

> [1] Сергей М. ©   (12.02.12 21:58)

он на другом десктопе.


Сергей М.   (2012-02-12 21:58:00) [15]


> Нужно отображать .. из доп. потока


Т.е. основной поток у тебя настолько из себя шибко занятый, что у него нет ни кванта времени чтобы отобразить ту самую форму ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо