Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.122.162] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
>если в основном треде идёт какой-то долгий процесс без чтения сообщений
Cм. сообщение Shaggy #6. |
Сообщ.
#17
,
|
|
|
А если я хочу сделать unit, который будет создавать такое окно?
Что ж мне теперь, из-за реализации одной функции в unit'е переносить весь код в другой поток??? Стрёмно как-то... К тому же, основной код может тоже содержать окна. В зависимости от того, где будет использоваться unit... |
Сообщ.
#18
,
|
|
|
Посмотрел TCustomForm.ShowModal для примера, очень много завязок на Application. Был неправ: слишком сильно всё завязали на главный поток. Раньше вроде всё проще было.
Тогда либо шерстить весь код TCustomForm и перекрывать методы, каким-то образом вытравливая все обращения к Application, и затем наследуя форму от этого перекрытого класса, либо уйти от форм к winapi диалогам. |
Сообщ.
#19
,
|
|
|
Цитата Fr0sT @ много завязок на Application. Был неправ: слишком сильно всё завязали на главный поток. Раньше вроде всё проще было. Не только на Application, но и на Screen и кучку других глобальных переменных, скрытых под капотом реализации VCL. И "раньше" было примерно также, т.к. VCL это не просто обертка над отдельными виндовыми окнами\диалогами, а система взаимосвязанных окон, которая должна корректно работать при потери\получении фокуса и сворачивании\разворачивании окон приложения. Цитата Fr0sT @ Тогда либо шерстить весь код TCustomForm ..., либо уйти от форм к winapi диалогам. Еще один вариант - использовать формы из dll, поскольку dll имеет свои собственные глобальные переменные Application и т.п., никак не связанные с основным приложением. Но если основное приложение - оконное, то при полной отвязке от главной формы приложения возможны глюки при сворачивании\разворачивании приложения (также как и с MessageBox c hWnd = 0). В этом случае (также как и c MessageBox) нужно отображаемым формам задавать ParentWindow основного приложения (чтобы при разворачивании они выходили на передний план, а не "прятались за спиной" основного окна). |