|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.03.2013, 16:56 | #1 |
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
Невозможное возможно?
Доброго всем чего там у вас! В одной из моих программ есть старенькая проблемка, а именно, несколько потоков, может одновременно создать по модальному окну (модальному, потому, что нужно затормозить поток, о получения информации) и при этом, активно всегда последнее созданное окно. Нужно каким то образом научить программу переключаться между этими окнами. Возможно ли это?
В планах порабощение вселенной...
|
22.03.2013, 17:09 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Создавайте не модальные окна. В момент создания поток приостанавливайте Syspend. По дестроу окна Resume
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
22.03.2013, 17:15 | #3 |
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
Аватар, где то я читал, что останавливать потоки вообще не самая удачная идея. Но все бы ничего, если бы знать как остановить поток из самого себя...
В планах порабощение вселенной...
|
22.03.2013, 18:17 | #4 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Мне кажется, потребность создавать окна вне основного потока говорит об ошибке проектирования.
Бороться нужно с причиной, а не с ее следствиями. |
22.03.2013, 18:20 | #5 |
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
s-andriano, например, каждый поток отправляет пользователю смс, и хочет, что бы пользователь предоставил ему отправленный код. Где ошибка в проектировании?
В планах порабощение вселенной...
|
22.03.2013, 18:22 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,344
|
Может сделать родителя окна NULL/HWND_DESKTOP?
Хотя конечно изначально дизайно карадинально ошибочен - понятие "модальный" исключает понятие "несколько". Затормаживание потока не значит, что окно модальное, собственно в Windows нет такого понятия - это просто диалог, чей родитель переводится в состояние disabled. Посколку окно создано в потоке, этот поток сам должен обеспечить message pump, пока он качает сообщения поток как бы стоит. CreateWindow() while(GetMessage()) DispatchMessage(); При закрытии окна посылаем WM_QUIT и проходим дальше. |
23.03.2013, 17:17 | #7 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,650
|
В проектировании как раз и есть ошибка. Не надо выводить окно для каждого потока. На главном окне программы сделать список для каждого потока с едитами для ввода кода. Поток ждет ввод кода в соответствующий едит, после чего продолжает работы.
E-Mail: arigato.freelance@gmail.com
|
23.03.2013, 18:23 | #8 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Могу лишь предположить, что Вы решили, что для каждой смс нужно: 1. Создать отдельный поток. 2. В этом потоке отправить пользователю сообщение. 3. Дождаться от пользователя ответ. 4. Обработать этот ответ. 5. Завершить поток. Если это так, то в таком алгоритме решения задачи и есть ошибка проектирования. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Возможно ли? | 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 |