Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Порядок выполнения функций... 
:(
    Опции темы
BlowFish
Дата 23.11.2002, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пишу в VC. Имеется два элемента на форме (диалоговое окно): кнопка и edit. Обрабатываю событие - нажатие кнопки. В обработчике выполняю следующие действия:
- кнопка становится неактивной
- в edit`е выводится текст (например: "Analyzing...")
- дальше идут мои собственные вычисления
- возвращаю в исходное состояние: кнопка - активна, в edit`e выводится "Ready"
- return;

Когда выполняется прога, при нажатии на кнопку она меняет свое состояние активна-неактивна, а вот в edit как была надпись "Ready" так и осталась.

Посоветуйте пожалуйста, как сделать, чтоб в момент вычисления в edit отражалось текущее состояние программы.
PM MAIL   Вверх
Klin
  Дата 23.11.2002, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: нет
Всего: 25



Цитата(BlowFish @ 23.11.2002, 09:35)
...Посоветуйте пожалуйста, как сделать, чтоб в момент вычисления в edit отражалось текущее состояние программы.

То есть?


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
BlowFish
Дата 23.11.2002, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



т.е. хочу чтоб, когда я нажал на кнопку (при этом у меня прога считает числа) в edit`е отобразилась надпись "Analysing...". А этого не происходит  :(
PM MAIL   Вверх
Baa
Дата 23.11.2002, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 8
Всего: 12



А может это происходит? просто вычисления слишком быстро проходят, что тут же реади выводится?


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
BlowFish
Дата 24.11.2002, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нет вычисления долгие (~15сек). Просто если в конце обработчика не возвращать в исходное состояние edit, то после выполнения обработчика в edit будет "Analyzing...", т.е. хотя функция на смену надписи "Ready" в "Analyzing..." вызывается раньше, чем происходят вычисления, но обновлятся состояние edit`а будет после обработчика нажатия кнопки.
Причем Invalidate() не помагает
PM MAIL   Вверх
Baa
Дата 24.11.2002, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 8
Всего: 12



Код бы чтоли показал... (токо вычисления убери куда-нить)


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
BlowFish
Дата 24.11.2002, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код
void CTestDlg::OnButtonStart()
{
ButtonStart.EnableWindow(false); // кнопка неактивна
StatusLineEdit.SetWindowText("Analyzing..."); //собственно статус-лайн, вывожу надпись "Analyzing..."
Analiz(); //вычисления, длятся ~10-15 сек
StatusLineEdit.SetWindowText("Ready"); //после окончания вычислений опять состояние "Ready"
ButtonStart.EnableWindow(true); //кнопка активна
}


В результате выполнения проги (нажатие на кнопку) надпись в StatusLineEdit как была "Ready", так и осталась "Ready".
Если запустить такой код:
Код
void CTestDlg::OnButtonStart()
{
ButtonStart.EnableWindow(false); // кнопка неактивна
StatusLineEdit.SetWindowText("Analyzing..."); //собственно статус-лайн, вывожу надпись "Analyzing..."
Analiz(); //вычисления, длятся ~10-15 сек
/////////////StatusLineEdit.SetWindowText("Ready"); //после окончания вычислений опять состояние "Ready"
ButtonStart.EnableWindow(true); //кнопка активна
}

то после вычислений (после выполнения OnButtonStart()) в StatusLineEdit появится "Analyzing...", т.е. все выводится только не в том порядке как мне надо.
Мне так-то надо всего лишь элемент в программе, который бы отображал состояние выполнения программы.
PM MAIL   Вверх
Baa
Дата 24.11.2002, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 8
Всего: 12



Как я понял, UpdateWindow не катит :\ засунь вычисления в отдельный поток  ;)


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Baa
Дата 24.11.2002, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 8
Всего: 12



Вобщем-то вот... все отлично работает...
Код

       CEdit* Edit = (CEdit*) GetDlgItem (IDC_EDIT1);
CButton* Button = (CButton*)GetDlgItem (IDC_BUTTON1);
Edit->SetWindowText ("Ready");
Edit->UpdateWindow ();
Sleep (2000);
Button->EnableWindow (FALSE);
Edit->SetWindowText ("Analyzing");
Edit->UpdateWindow ();
Sleep (5000);
Edit->SetWindowText ("Ready");
Button->EnableWindow (TRUE);



--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
BlowFish
Дата 24.11.2002, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спсибо все получилось  :)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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