Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 107
от 17.05.2005, 15:30

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 2


Вопрос № 20727: Здравствуйте эксперты Возникла следующая проблема. В диалоге по кнопке выполняется достаточно долгая обработка. Если в момент обработки нажать кнопку, то после окончания обработки она запускается снова. Как можно очистить очередь...

Вопрос № 20727
Здравствуйте эксперты
Возникла следующая проблема.
В диалоге по кнопке выполняется достаточно долгая обработка.
Если в момент обработки нажать кнопку, то после окончания обработки
она запускается снова.
Как можно очистить очередь сообщений для данного диалогового окна
после окончания обработки. ( обработка может выполняться неоднократно по желанию пользователя, поэтому других критериев нет)
И еще небольшой вопрос. Есть ли в Microsoft C++ стандартные средства для выполнения следующей задачи:
перед выполнением длинной работы вывести окошко с сообщением
(типа MessageBox), но чтобы работа потока не блокировалась.
После окончания обработки окно с сообщением закрывается.
с уважением Ильдар
ildar_trvl@rambler.ru
Отправлен: 12.05.2005, 10:45
Вопрос задал: ildar (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Jadd
Здравствуйте, ildar!
Не нужно ничего чистить! Не валяйте дурака! Первое. Делайте disable кнопке, дабы не дать юзверю нажать еще раз, т.е. m_button.EnableWindow(FALSE). Далее. Сделайте диаложик для показа пользователю, мол, "в процессе. Подождите..." и нужно просто его показать, и проапдейтить, чтобы перерисовалось, а по окончании просто закрыть. Дальше. Используйте BeginWaitCursor и EndWaitCursor. Покажет песочные часы, мол программа занята и нечего тыркать тут. Удачи.
Ответ отправил: Jadd (статус: 3-ий класс)
Отправлен: 12.05.2005, 16:14

Отвечает: Bob Johnson
Здравствуйте, ildar!
Тебе в принципе стоит использовать второй поток для выполнения задачи, а для синхронизации применять, например, сообщения.
Вообще же, для извлечения из очереди всех сообщений можно использовать такой код:
while (PeekMessage (&msg, 0, 0, 0, PM_REMOVE));
это извлечет все сообщения из очереди без их обработки. Но ты можешь пропустить какие-либо важные сообщения.

* EMan2.0: ---===*** Debug mode ***===---

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 13.05.2005, 01:09


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Отписаться

В избранное