Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2013, 16:56   #1
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию Невозможное возможно?

Доброго всем чего там у вас! В одной из моих программ есть старенькая проблемка, а именно, несколько потоков, может одновременно создать по модальному окну (модальному, потому, что нужно затормозить поток, о получения информации) и при этом, активно всегда последнее созданное окно. Нужно каким то образом научить программу переключаться между этими окнами. Возможно ли это?
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 22.03.2013, 17:09   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Создавайте не модальные окна. В момент создания поток приостанавливайте Syspend. По дестроу окна Resume
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.03.2013, 17:15   #3
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Аватар, где то я читал, что останавливать потоки вообще не самая удачная идея. Но все бы ничего, если бы знать как остановить поток из самого себя...
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 22.03.2013, 18:17   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Мне кажется, потребность создавать окна вне основного потока говорит об ошибке проектирования.
Бороться нужно с причиной, а не с ее следствиями.
s-andriano вне форума Ответить с цитированием
Старый 22.03.2013, 18:20   #5
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

s-andriano, например, каждый поток отправляет пользователю смс, и хочет, что бы пользователь предоставил ему отправленный код. Где ошибка в проектировании?
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 22.03.2013, 18:22   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Может сделать родителя окна NULL/HWND_DESKTOP?
Хотя конечно изначально дизайно карадинально ошибочен - понятие "модальный" исключает понятие "несколько".
Затормаживание потока не значит, что окно модальное, собственно в Windows нет такого понятия - это просто диалог, чей родитель переводится в состояние disabled.

Посколку окно создано в потоке, этот поток сам должен обеспечить message pump, пока он качает сообщения поток как бы стоит.

CreateWindow()
while(GetMessage())
DispatchMessage();

При закрытии окна посылаем WM_QUIT и проходим дальше.
waleri вне форума Ответить с цитированием
Старый 23.03.2013, 17:17   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от zumm Посмотреть сообщение
Где ошибка в проектировании?
В проектировании как раз и есть ошибка. Не надо выводить окно для каждого потока. На главном окне программы сделать список для каждого потока с едитами для ввода кода. Поток ждет ввод кода в соответствующий едит, после чего продолжает работы.
Arigato вне форума Ответить с цитированием
Старый 23.03.2013, 18:23   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от zumm Посмотреть сообщение
s-andriano, например, каждый поток отправляет пользователю смс, и хочет, что бы пользователь предоставил ему отправленный код. Где ошибка в проектировании?
В Вашем сообщении нет собственно проекта, поэтому указать на ошибку в нет нет возможности.

Могу лишь предположить, что Вы решили, что для каждой смс нужно:
1. Создать отдельный поток.
2. В этом потоке отправить пользователю сообщение.
3. Дождаться от пользователя ответ.
4. Обработать этот ответ.
5. Завершить поток.

Если это так, то в таком алгоритме решения задачи и есть ошибка проектирования.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли? Tabasco7 Microsoft Office Excel 8 14.01.2015 18:36
Возможно невозможное? Rost93 PHP 6 20.12.2011 19:50
Возможно ли? Ev1L Общие вопросы C/C++ 2 28.11.2010 00:10
Возможно ли... SunKnight БД в Delphi 9 27.02.2008 02:51
Невозможное удаление подключаемого модуля! FoREX Помощь студентам 2 04.07.2007 12:46