powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / VB6 --> C++ Builder 6: Подскажите аналог DoEvents
10 сообщений из 10, страница 1 из 1
VB6 --> C++ Builder 6: Подскажите аналог DoEvents
    #34898275
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, подскажите, наверняка кто-то встречался.
Пишу вывод на Form1->Memo1->Lines-> значений, вычисляемых в большом цикле.
Выводится очень хорошо. Но проблема в том, что пока цикл не кончится, форма как бы зависает и я не могу её мышью ни передвинуть на другое место, ни закрыть. Если же чудом удаётся передвинуть форму, то цикл останавливается и программа зависает навсегда.
В Visual Basic есть для этого специальная функция DoEvents.
Есть ли аналог в С++ ?
Заранее спасибо
Max Pro
...
Рейтинг: 0 / 0
VB6 --> C++ Builder 6: Подскажите аналог DoEvents
    #34898680
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх. Сам нашёл. Не знаю то ли это:
Код: plaintext
Application->ProcessMessages();
В принципе работает правильно, перетаскивать окно можно, но не даёт, с..ка, закрыть окно.
Max Pro
...
Рейтинг: 0 / 0
VB6 --> C++ Builder 6: Подскажите аналог DoEvents
    #34898703
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ещё способ. Работает точно также. Тоже не даёт окно закрыть.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
void DoEvents()
{
        MSG oMSG;
        while(::PeekMessage(&oMSG, NULL,  0 ,  0 , PM_NOREMOVE))
        {
                if(::GetMessage(&oMSG, NULL,  0 ,  0 ))
                {
                        ::TranslateMessage(&oMSG);
                        ::DispatchMessage(&oMSG);
                }
                else
                {
                        break;
                }
        }
}
Max Pro
...
Рейтинг: 0 / 0
VB6 --> C++ Builder 6: Подскажите аналог DoEvents
    #34898717
gl@z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрите пример C:\BCB6\Examples\Apps\Threads\ (или как там соответствено у Вас) - кажется, это то, что Вам надо.
...
Рейтинг: 0 / 0
VB6 --> C++ Builder 6: Подскажите аналог DoEvents
    #34898734
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gl@zПосмотрите пример C:\BCB6\Examples\Apps\Threads\ (или как там соответствено у Вас) - кажется, это то, что Вам надо.
Посмотрел. Там та же проблема - пока не закончится сортировка окно невозможно закрыть. Хорошо у меня компьютер слабенький, а то и проверить не смог бы (сортировка идёт довольно быстро).

Остаётся маленький вопрос: как во время выполнения обработчика кнопки (у меня долгий цикл) разрешить С++ закрыть окно по нажатию на кнопочку с крестиком в углу окна либо по Crtl+F4
?
...
Рейтинг: 0 / 0
VB6 --> C++ Builder 6: Подскажите аналог DoEvents
    #34898736
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max Pro либо по Crtl+F4
?
Пардон, Alt+F4 конечно же
...
Рейтинг: 0 / 0
VB6 --> C++ Builder 6: Подскажите аналог DoEvents
    #34898747
gl@z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я имел ввиду - запихнуть длинныЙ цикл в самостоятелную Thread. Когда-то у меня была такая ситуация - так и решил. Возможно, проект кудо-то валяется... Поищу.
...
Рейтинг: 0 / 0
VB6 --> C++ Builder 6: Подскажите аналог DoEvents
    #34898754
gl@z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кажется, вспомнил - если не ошибаюсь. Копайте в сторону Synchronize Metod - по памяти, там было решение моей проблеммы.
...
Рейтинг: 0 / 0
VB6 --> C++ Builder 6: Подскажите аналог DoEvents
    #34898760
gl@z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
//
// Synchronize(UpdateCaption);
//
// where UpdateCaption could look like:
//
// void __fastcall SndThread::UpdateCaption()
// {
// Form1->Caption = "Updated in a thread";
// }
//---------------------------------------------------------------------------
...
Рейтинг: 0 / 0
VB6 --> C++ Builder 6: Подскажите аналог DoEvents
    #34899314
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max Proне даёт, с..ка, закрыть окноесли мне не изменяет память, там OnCloseQuery обрабатывается при этом, можно флажок выставить
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / VB6 --> C++ Builder 6: Подскажите аналог DoEvents
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]