![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
cOZA |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.4.2006 Репутация: нет Всего: нет |
Столкнулся с таким вопросом, и не знаю с чего начать.
Вопрос следующий: 1) необходимо создать поток, 2) при создании потока создать и вывести форму с кнопкой "Отмена", 3) при нажатии "Отмена" уничтожить форму и завершить процесс. Хотелось бы примеров и ссылок на мануалы именно по этому вопросу (как правильно создавать формы в потоке). |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
На WinAPI, как и обычное окно, только в потоке.
То есть обычный цикл обработки оконных собщений. Он будет вызывать оконную процедуру в том потоке, где сам и крутится. На VCL это невозможно - стандартные формы работают только в главном потоке. Возможно лет через 5 ситуация изменится, но пока это так. |
|||
|
||||
samsamich |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.3.2010 Репутация: нет Всего: нет |
Для запроса на прерывание работы потока совсем не нужно создавать форму в отдельном потоке. Она прекрасно создается и в основном. Нужно лишь создать в классе потока событие в обработчике которого выдавать запрос на окончание работы. через Synchronize естественно
|
|||
|
||||
cOZA |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.4.2006 Репутация: нет Всего: нет |
А можно пример, как это делается? |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Достаточно действия 2 и 3 просто выполнять в главном потоке. Тогда можно будет использовать обычную форму VCL, без WinAPI.
Имеется в виду, что вторичный поток может делегировать некоторые действия главному потоку. Например, через Synchronize или EnterMainThread/LeaveMainThread. Добавлено через 4 минуты и 25 секунд Посмотрите ещё вот это и это. Это сообщение отредактировал(а) CodeMonkey - 10.3.2010, 17:34 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |