Вопрос № 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