|
62 / 63 / 3
Регистрация: 25.05.2009
Сообщений: 520
|
||||||
Как сделать, чтобы модальное окно закрылось по условию?24.08.2009, 13:53. Показов 4896. Ответов 16
Метки нет (Все метки)
Предполагается модальное диалоговое окно ProgressSave с прогресс баром и кнопкой ОК.
Надо чтобы по завершении прогресса окно само закрылось и передало управление основной программе. Прогресс ещё не создавал, это потом. Главное - отрепетировать закрывание окна. В качестве эксперимента использую цикл for. Такой код вызывает ошибку. вот эту: http://www.sharemania.ru/0200321 (окно уже открыто, код из него. Пробовал всё, что закомментировано)
0
|
||||||
| 24.08.2009, 13:53 | |
|
Ответы с готовыми решениями:
16
Как сделать, чтобы не закрывалось окно командной строки? Как сделать, чтобы окно выполнения сразу не закрывалось?
|
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
| 25.08.2009, 05:34 | |
|
Если коротко, то в конструкторе CProgressSave не надо вызывать функции закрытия модального окна. Лучше сделайте так: или перегрузите функцию OnOk() и в ней вызывайте Ваши условия или создайте свою функцию, в которой проверяйте необходимые условия и в ней же вызывайте любую из перечисленных Вами функций зыакрытия модального окна.
0
|
|
|
62 / 63 / 3
Регистрация: 25.05.2009
Сообщений: 520
|
||
| 25.08.2009, 05:43 [ТС] | ||
|
2novi4ok: По большому счету, мне надо создать любое модальное окно, чтобы оно через 1 сек. само себя закрыло. Мне бы с механизмом разобраться. Дальше я сам. А что оно вернёт - ОК или нет - по барабану. А то что я написал выше вообще должно работать? Мож у меня компилятор тупит?
0
|
||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
| 25.08.2009, 07:22 | |
|
Каким компилятором пользуетесь?
Обязательно ли окно должно быть модальным? Как я понял из последнего сообщения окно может быть и не модальным (для Вашей задачи окно как раз и должно быть немодальным).
0
|
|
|
62 / 63 / 3
Регистрация: 25.05.2009
Сообщений: 520
|
|
| 25.08.2009, 07:45 [ТС] | |
|
Задача полностью:
Делаю прогу для прошивки Flash памяти прибора через СОМ порт. Прошивка ведётся обычной командой WriteFile, файл отправляется целиком, побайтная отправка не поддерживается. Прерывание записи грозит понятно чем. Хочу визуализировать процесс записи посредством прогрессбара. Т.к. при работе WriteFile таймер окна не работает, делаю отдельное окно со своим таймером и прогрессбаром. (хотя не уверен, будет ли так работать). Лучше модальное, чтоб небыло доступа к родительскому окну до завершения процесса. По окончании оно закрывается. Всё. WinXP SP3, MS Visual Studio 2008, C++, проект MFC dialog based.
0
|
|
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||||||
| 25.08.2009, 08:22 | ||||||
|
Доступа к родительскому окну до завершения процесса из дочернего немодального окна в приведенном ниже примере нет.
Даю как вариант: 1. Создаем проект MFC dialog based. 2. В ресурсах на диалоговом окне создаем кнопку и функцию нажатия на нее. 3. Там же в ресурсах создаем новое диалоговое окно с идентификатором (IDD_DIALOG1). 4. В функции нажатия на кнопку пишем:
0
|
||||||
|
62 / 63 / 3
Регистрация: 25.05.2009
Сообщений: 520
|
|
| 25.08.2009, 09:36 [ТС] | |
|
Не, не получается.
Вырисовывается пустое окно, без кнопок и прогрессбара. Хотя закрывается само ![]() Задержку увеличивал до 30 сек. Не прорисовывается ничего.
0
|
|
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||||||||||||||||
| 25.08.2009, 10:02 | ||||||||||||||||
|
Как вариант привожу пример для модального окна:
1. Создаем проект MFC dialog based. 2. В ресурсах на диалоговом окне создаем кнопку и функцию нажатия на нее. 3. Там же в ресурсах создаем новое диалоговое окно. 4. В функции нажатия на кнопку пишем:
6. В нашем вновь созданном классе перегружаем функцию OnInitDialog(), функцию OnTimer(UINT nIDEvent) и функцию OnOK(). 7. В начале файла реализации класса нашего диалогового окна добавляем строку: #define ID_TIMER_1 200 8. В функции OnInitDialog() внутрение строки переписываем в таком виде:
Модальное диалоговое окно закрывает само себя через 1000 миллисекунд. Добавлено через 4 минуты А предыдущее окно (которое немодальное) чтобы показывало кнопки, прогрессбар нужно это окно делать отдельным классом, в том классе заводить на прогрессбар переменную, на кнопки функции реализации нажатия на кнопки (в общем еще много чего делать надо, я только показал как нужно показывать окно на какое либо время и что бы оно само закрывалось).
0
|
||||||||||||||||
|
62 / 63 / 3
Регистрация: 25.05.2009
Сообщений: 520
|
||
| 25.08.2009, 11:22 [ТС] | ||
|
C OnTimer и OnOK разобрался, тут легко. А вот как "перегружаем функцию OnInitDialog()" ? Не найду. Автоматом не прописывается нигде. Прописал вручную, видимо где-то накосячил. Стоп по переполнению стека при открытии. BOOL СMyDialog::OnInitDialog() { СMyDialog::OnInitDialog();
0
|
||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|||||||||||
| 25.08.2009, 11:58 | |||||||||||
|
В заголовочном файле в разделе protected:
0
|
|||||||||||
|
62 / 63 / 3
Регистрация: 25.05.2009
Сообщений: 520
|
|
| 25.08.2009, 12:16 [ТС] | |
|
Ну наконец-то!
Всё работает. Основа есть, буду доделывать. Огромное спасибо. Удачи.
0
|
|
|
62 / 63 / 3
Регистрация: 25.05.2009
Сообщений: 520
|
||
| 25.08.2009, 13:41 [ТС] | ||
|
0
|
||
|
|
||||||
| 26.08.2009, 09:30 | ||||||
|
Нет ничего проще - добавляем обработчик события WM_SHOWWINDOW и в теле обработчика прописываем SetTimer - не в InitDialog !!!!А в теле обработчика OK перед строчкой
СMyDialog::OnOK() прописываем строчечку KillTimer(1);Т.е. чтоб до разрушения окна таймер остановить
0
|
||||||
|
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
|
|
| 26.08.2009, 14:38 | |
|
Как вариант, грохнуть из другого потока.
0
|
|
|
|
|
| 26.08.2009, 17:49 | |
|
Вот проект прогрес окошка. Работает так: в основном окне нажимаем ОК - появляется окошко прогресса, дальше всё видно воочию...
0
|
|
| 26.08.2009, 17:49 | |
|
Помогаю со студенческими работами здесь
17
Как сделать, чтобы видео с ютуба помещенное на сайт, не перекрывало модальное окно? Как перейти на второе окно, что бы первое окно закрылось (NetBeans) Как сделать модальное окно Как сделать,автоматическое модальное окно?) Блокирующее Модальное окно как сделать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|