Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Закрыть окно через заданное время |
Автор: АлексейМ 18.12.2005, 20:02 | ||
Народ, у мя такой вот вроде бы совсем несложный вопросик. Нужно через заданное в EditBox время закрывать диалоговое окно проги. Предполагаю, что можно это сделать с помощью цикла и функции SetTimer. Например, в поле вводим время в минутах. Тогда параметрами таймера могут быть SetTimer(1, 60000, NULL). Переменной цикла присваиваем значение из поля ввода. Одна минута - цикл повторяется один раз, две минуты - два и т.д. Только вот как сделать, чтобы окно закрывалось при окончании цикла? Вот, у меня был вариант, но он по понятным причинам не работает. А другой чёт не допирает, как сделать...
Заранее благодарю. ![]() |
Автор: Aleksandor 18.12.2005, 20:09 |
Ну например можно по окончании цикла послать окну сообщение, а в обработчике сообщения убить таймер и закрыть окно. Сообщение типа SendMessage(hDlg,WM_APP+1,0,0); Обработчик case WM_APP+1: KillTimer(hDlg,1); EndDialog(hDlg,TRUE); return TRUE; |
Автор: АлексейМ 18.12.2005, 22:57 |
Aleksandor, будь добр, укажи, куды в моём коде всё это дело вставлять. Спасиба! |
Автор: SergeCpp 19.12.2005, 11:46 |
А зачем цикл-то ? Ставишь таймер сразу на сколько надо... Ведь твой цикл — не задержка! Он мгновенно выполняется! |
Автор: АлексейМ 20.12.2005, 02:34 | ||
SergeCpp, вишь, в чём дело - мне надо, чтобы в моей проге ПОЛЬЗОВАТЕЛЬ мог задавать время, через которое окно будет закрываться, открываться, выдавать какое-нить сообщение или производить любую другую операцию. Например, хочешь задать программке, чтобы через десять минут она включила те какой-нить музончик, а потом вдруг передумал, и захотел, чтобы она включила музон через полчаса. Если каким-то макаром реализовать то, что я хочу, то это сделать будет очень просто. А если предложенным тобой способом, то, чтобы изменить время, надо будет изменять исходник и перекомпилировать... Согласись, эт не очень удобно.
Вот в этом-то вся проблема... Может, сделать какую-нить функцию, которая будет до определённого момента считать поступившие сигналы таймера? Опять же, не представляю, как это можно реализовать... У кого есть идеи? давайте их сюды! ![]() |
Автор: SergeCpp 20.12.2005, 07:58 |
Не понял... tmr = SetTimer(1, 60000 * cycletime, NULL); В чём тут сложности ? ================================== Или уж делай static в таймерном обработчике И её увеличивай (уменьшай) |
Автор: АлексейМ 20.12.2005, 08:38 |
Спасибо большое! Просто я ещё новичок, и не знал, что в таймере умножение можно ставить. ![]() Ща попробую! |