Cancel Progress

Тема в разделе "WASM.WIN32", создана пользователем SolidCode, 11 дек 2004.

  1. SolidCode

    SolidCode New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2002
    Сообщения:
    162
    Адрес:
    Kazakhstan
    У меня основное окно, в котором крутится обработка сообщений через PeekMessage

    Ещё делаю немодальный диалог с прогрессбар и кнопочкой Cancel. Кнопочка не хочет работать. Видимо потому что процесс занят другим делом. Что делать?

    Или как правильно реализовать выполнение долгого дела с диалогом, прогрессбаром и кнопкой Cancel, чтобы можно было легко остановить его?
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Оформить долгое дело как отдельную нить.
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Насчёт кнопки, ты определенно что-то делаешь не так.

    Покажи код..
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105




    Так вроде основных способов 2 :

    1) "допотопный" с опросом флага завершения

    во всех-всех циклах

    2) обработка событий именно в процессе, который

    хочешь остановить.



    Я так понял, что твой процесс привязан к немомодальному

    диалогу. Выводу прогресс-бара ничего не мешает,

    если перерисовывать окно, а вот чтобы кнопочки

    работали надо периодически давать этому окну

    возможность обрабатывать события. К сожалению

    я освоил только Visual Basic - там это делается

    функцией DoEvent.

    Нить действительно дает изящное решение и

    даже диалог не нужен : все можно делать

    в главном окне. Правда возникает задача

    обмена информацией... , но тут я могу сильно

    ошибаться.