Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> полнофункциональная форма в дочернем потоке 
:(
    Опции темы
cOZA
  Дата 10.3.2010, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.4.2006

Репутация: нет
Всего: нет



Столкнулся с таким вопросом, и не знаю с чего начать.
Вопрос следующий:
1) необходимо создать поток,
2) при создании потока создать и вывести форму с кнопкой "Отмена",
3) при нажатии "Отмена" уничтожить форму и завершить процесс.

Хотелось бы примеров и ссылок на мануалы именно по этому вопросу (как правильно создавать формы в потоке).

PM MAIL   Вверх
Snowy
Дата 10.3.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



На WinAPI, как и обычное окно, только в потоке.
То есть обычный цикл обработки оконных собщений.
Он будет вызывать оконную процедуру в том потоке, где сам и крутится.

На VCL это невозможно - стандартные формы работают только в главном потоке.
Возможно лет через 5 ситуация изменится, но пока это так.
PM MAIL   Вверх
samsamich
Дата 10.3.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Для запроса на прерывание работы потока совсем не нужно создавать форму в отдельном потоке. Она прекрасно создается и в основном. Нужно лишь создать в классе потока событие в обработчике которого выдавать запрос на окончание работы. через Synchronize естественно
PM MAIL   Вверх
cOZA
Дата 10.3.2010, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.4.2006

Репутация: нет
Всего: нет



Цитата(Snowy @ 10.3.2010,  15:48)
На WinAPI, как и обычное окно, только в потоке.
То есть обычный цикл обработки оконных собщений.
Он будет вызывать оконную процедуру в том потоке, где сам и крутится.

А можно пример, как это делается?
PM MAIL   Вверх
CodeMonkey
Дата 10.3.2010, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Достаточно действия 2 и 3 просто выполнять в главном потоке. Тогда можно будет использовать обычную форму VCL, без WinAPI.

Имеется в виду, что вторичный поток может делегировать некоторые действия главному потоку. Например, через Synchronize или EnterMainThread/LeaveMainThread.

Добавлено через 4 минуты и 25 секунд
Посмотрите ещё вот это и это.

Это сообщение отредактировал(а) CodeMonkey - 10.3.2010, 17:34


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1205 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.