Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрытие модального окна 
V
    Опции темы
Феликс
Дата 5.7.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: -2
Всего: -3



Код

    CLogoDlg* mLogo = new (CLogoDlg);
    if(mLogo->DoModal() == IDOK) {
        Sleep(1000);
        mLogo->DestroyWindow();
    }
    delete mLogo;


В чём моя ощибка? Окно просто навсего нехочет закрываться по истечению одной секунды!
Заранее спасибо!
PM   Вверх
Fazil6
Дата 5.7.2007, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



на то оно и модальное, что пока его не закроешь дальше выполнение не идет
Код

mLogo->DoModal() == IDOK   // тут стоим пока окно не закроется

так что 
Код

Sleep(1000);
mLogo->DestroyWindow();

не выполняется как ты предполагаешь

PM MAIL   Вверх
Феликс
Дата 6.7.2007, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: -2
Всего: -3



Цитата(Fazil6 @ 5.7.2007,  23:49)
Код

mLogo->DoModal() == IDOK   // тут стоим пока окно не закроется

Понятное дело что стоим! Вопрос был как его закрыть по истечению времени!
Задача состоит в том что есть диалоговое окно на которой кнопка, да да та самая обыкновеная кнопка =ъ.
При нажатии по кнопке, диалоговое окно сворачивается в трэй, а на его месте появляется модальное окно, которое по истечению заданого времени закрывается.
Вроде просто! Тока проблема в том что не получается закрыть.
PM   Вверх
Earnest
Дата 6.7.2007, 09:43 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Только изнутри (т.е. из кода самого диалога), т.к. поток управления не выходит за пределы DoModal, пока он не завершится (модальный цикл). Теоретически можно прервать модальный цикл из другого потока, но это как-то проктологически. А изнутри - легко: 
При инициализации  (OnInitDialog) ставишь таймер на сколько тебе надо.
Пишешь обработчик таймера, в котором закрываешь диалог (EndDialog) не забыв предварительно убить таймер.


--------------------
...
PM   Вверх
Феликс
Дата 6.7.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: -2
Всего: -3



Спасибо! Проблема решена!  smile 

Это сообщение отредактировал(а) Феликс - 6.7.2007, 15:01
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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