Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/58: Рейтинг темы: голосов - 58, средняя оценка - 4.66
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234

Как заставить работать Application->ProcessMessages();?

12.06.2014, 18:02. Показов 11038. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Программа после запуска проверяет на наличие новых файлов и начинает загрузку!
я использовал компонент
C++
1
#pragma comment(lib, "urlmon.lib")// для URLDownloadToFile !
C++
1
URLDownloadToFile(0,"http://dl.dropbox.com/s/d8qg97bzlc5d6x/abonat.xlsx?dl=1&token_hash=AAG5Eor7asV6n5tDQMPMawczOhI5A7Pycxu4szA7z6iAA......
но вся проблема в том что после старта загрузки файла прога естественно что практически "висит"
на панели выложил Image в который по циклу меняются картинки процесса загрузки. и все это в таймере конечно же.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//##############################################################################
void __fastcall TForm1::Timer1Timer(TObject *Sender)
//##############################################################################
{
if (geografic == true)
{ m++;
       // Panel4->Refresh();
      //ImageML->Picture->Bitmap = Image2->Picture->Bitmap;
       Application->ProcessMessages();
      ImageML->Picture->Bitmap = Image2->Picture->Bitmap;
       //Application->ProcessMessages();
      //ImageML->Invalidate(); //Перерисовываем.
}
}
прога стартует и картинка стоит на одном месте хотя в панели задач на мини изображении программы все вертиться в реальном времени.

Как мне в этом цикли обновлять ? куда только не ставил Application->ProcessMessages();
все бестолку. только в панели задач все работает
Как правильно использовать Application->ProcessMessages();?
на разных сайтах видел все тоже самое но у меня не работает.
Миниатюры
Как заставить работать Application->ProcessMessages();?  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.06.2014, 18:02
Ответы с готовыми решениями:

Как заставить работать CopyFile?
Никак не могу заставить работать , помогите пожалуйста. { ...

Как заставить работать событие в потоке
void __fastcall TForm1::Shape1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { static int X1; static int Y1; ...

Как заставить сервис работать постоянно?
Приветствую всех. Проблема никак не могу решить - пишу прогу на С++ builder 6. Создаю сервис - типа стандартный борлондовский - всё...

20
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
12.06.2014, 18:21  [ТС]
Извиняюсь не полную информацию дал в таймере .
вот полная версия
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//##############################################################################
void __fastcall TForm1::Timer1Timer(TObject *Sender)
//##############################################################################
{
  ImageList1->GetBitmap(index, Image2->Picture->Bitmap);
   Image2->Invalidate();
  //Application->ProcessMessages();
  index++; //Берем индекс следующей картинки.
  if (index>7) index = 0;//обнуление индекса
 
if (geografic == true)
  { m++;
       // Panel4->Refresh();
      //ImageML->Picture->Bitmap = Image2->Picture->Bitmap;
       Application->ProcessMessages();
      ImageML->Picture->Bitmap = Image2->Picture->Bitmap;
       //Application->ProcessMessages();
      //ImageML->Invalidate(); //Перерисовываем.
  }
}
0
Модератор
 Аватар для D1973
9837 / 6378 / 2451
Регистрация: 21.01.2014
Сообщений: 27,116
Записей в блоге: 3
12.06.2014, 18:24
А так если?
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (geografic == true)
{ m++;
      ImageML->Picture->Bitmap = Image2->Picture->Bitmap;
      ImageML->Update();
      Application->ProcessMessages();
}
}
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
12.06.2014, 18:26  [ТС]
D1973,
К сожалению нет. все так и молчит.
0
Модератор
 Аватар для D1973
9837 / 6378 / 2451
Регистрация: 21.01.2014
Сообщений: 27,116
Записей в блоге: 3
12.06.2014, 18:30
А этот geografic точно true?
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
12.06.2014, 20:20  [ТС]
да точно тру. даже поставил месадж в цикл и он высветился.

Добавлено через 1 час 47 минут
заметил одну странность.
добавил Beep ();
C++
1
2
3
4
5
6
if (geografic == true)
{            
         Beep();
      ImageML->Picture->Bitmap = Image2->Picture->Bitmap;
      
}
запустил прогу звука нет?! но когда курсором мышки стал на панель задач на вкладку проги звук начал с переодичностью таймера дзинькать.
значит основное окно проги стало не активным а в панели задач работает! мистика .
0
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 9
12.06.2014, 20:27
попробуй прописать тру в коде, а не в свойствах изменять
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
12.06.2014, 20:54  [ТС]
DaySet,
Цитата Сообщение от DaySet Посмотреть сообщение
попробуй прописать тру в коде, а не в свойствах изменять
это как?
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
14.06.2014, 19:06  [ТС]
Так и не нашел решение Как заставить работать Application->ProcessMessages();? .
Решил вопрос запуском сторонего ехе-шника который занимается загрузкой файла , а основная программа в это время отображает процесс загрузки файла.
Преимущество: когда файл загружается основная форма свободно двигается.
Другой вариант - можно было использовать поток.
но там я чёт заблудился
0
Модератор
 Аватар для vxg
3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
15.06.2014, 07:40
Цитата Сообщение от lifeforce Посмотреть сообщение
не нашел решение
пока в одном из обработчиков выполняется функция приложение будет висеть. никакие таймеры вас не спасут - они выполняются в том же потоке что и обработчик - то есть просто ожидают. нужно вынести функцию загрузки в поток
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//---------------------------------------------------------------------------
class main_thread_t;
 
static main_thread_t *main_thread;
 
class main_thread_t : public TThread
{
public:
    main_thread_t(bool CreateSuspended = false): TThread(CreateSuspended)
    {
        FreeOnTerminate = true;
    }
 
    void __fastcall beg(void)
    {
        Form1->ProgressBar1->Position = 0;
        Form1->Timer1->Enabled = true;
    }
 
    void __fastcall end(void)
    {
        Form1->Timer1->Enabled = false;
        Form1->ProgressBar1->Position = 100;
        main_thread = 0;
        Application->MessageBox
        (
            "Готово",
            "Сообщение",
            MB_OK
        );
    }
 
    virtual void __fastcall Execute(void)
    {
        Synchronize(beg);
        Sleep(5000);
        Synchronize(end);
    }
};
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if (main_thread)
    {
        Application->MessageBox
        (
            "Мы уже что-то делаем",
            "Сообщение",
            MB_OK
        );
        return;
    }
    main_thread = new main_thread_t;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    ProgressBar1->Position += 10;
}
//---------------------------------------------------------------------------
1
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
15.06.2014, 13:20  [ТС]
vxg,
Спасибо за помощь!
попробую это "прикрутить" .
сама программа с периодичностью проверяет на сайте новый файл и если версия файла отличается - то начинается загрузка файла и в момент загрузки на панели картинка загрузки должна крутиться, пока не закончится загрузка файла.
такая вот работа программы.
0
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 31
02.07.2016, 11:09
Всем привет! У меня тоже проблемы с Application->ProcessMessages();
Пишет: error C2143: syntax error : missing ';' before '->' .
Я уже не могу понять куда его поставить. Только начал изучать с++ и хочу видеть каждое изменение экрана. Пишу на Visual Studio 2013.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
{ int i;   
                 int s;
                 s = 0;
                 for (i = 1; i <= 1000000000; i++)
                 {
                    
                     s = s + 1;
                     label1->Text = s.ToString();
                     
                 }
                 Application->ProcessMessages();
                 
    }
0
Модератор
 Аватар для vxg
3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
02.07.2016, 11:28
Daniel5555, это объект билдера в студии все другое
0
Модератор
 Аватар для D1973
9837 / 6378 / 2451
Регистрация: 21.01.2014
Сообщений: 27,116
Записей в блоге: 3
02.07.2016, 11:32
Цитата Сообщение от Daniel5555 Посмотреть сообщение
Пишу на Visual Studio 2013
Казалось бы, причем тут C++ Builder? Я, кстати, не уверен, что в Visual Studio вообще есть такой класс: TApplication... Насколько мне известно - это VCL-ный класс...
В билдере же это должно выглядеть вот так:
C++
1
2
3
4
5
for(int i = 0; i < 10000; i++)
   {
     Label1->Caption = IntToStr(i);
     Application->ProcessMessages();
   }
0
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 31
02.07.2016, 11:39
Спасибо. Что легче для понимания? C++ Builder или Studio?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33149 / 21441 / 8223
Регистрация: 22.10.2011
Сообщений: 36,771
Записей в блоге: 9
02.07.2016, 11:41
Цитата Сообщение от Daniel5555 Посмотреть сообщение
Пишу на Visual Studio 2013
Это который C++ CLI? Там - вот так:
C++
1
Application::DoEvents();
1
Модератор
 Аватар для vxg
3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
02.07.2016, 11:44
Daniel5555, что лучше кошки или собаки (с) ?
0
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 31
02.07.2016, 11:48
Ошибки теперь нет, но не работает
0
Модератор
 Аватар для D1973
9837 / 6378 / 2451
Регистрация: 21.01.2014
Сообщений: 27,116
Записей в блоге: 3
02.07.2016, 11:50
Daniel5555, черт его знает, я в Studio не работал практически... До билдера работал в Дельфи, поэтому, когда понадобился язык C++, для меня выбор был очевиден: привык к VCL, да и интерфейс знакомый...
Если не работал ни там ни там, то разницы, по-моему, нет, что изучать...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33149 / 21441 / 8223
Регистрация: 22.10.2011
Сообщений: 36,771
Записей в блоге: 9
02.07.2016, 11:50
А оно и не должно работать. DoEvents должен вызываться внутри цикла, а не после него.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.07.2016, 11:50
Помогаю со студенческими работами здесь

C++ Builder и Проводник. Как заставить работать вместе
Дело такое. Пишу что-то вроде антивирусной утилиты, но уже второй (впрочем, третий) день сижу над одной задачей. Пытаюсь реализовать...

Как заставить ресурс работать без записи на диск?
привет всем! задача может для кого то бональна, но я незнаю ответа. суть: создан ресурс, и чтоб его открыть использую вот эту...

Как заставить проэкт работать в Visual Studio 2010?
Доброго времени суток! Люди пожалуста помогите, вчера поставил себе Microsoft Visual Studio 2010. Создал новый проэкт C++, Win32 Console...

Как заставить работать компоненты второй формы (пока инициализируеться первая форма)?
Всем Привет! :) Возникла вот одна задачка. при запуске программы (ФОРМА1 ) пока она создаеться включается (ФОРМА2) и показывает процесс...

как заставить работать свойство "Transparent"?
здравствуйте, есть два изображение: одно задний план, другое - обьект. как сделать так, чтоб прямоугольник, который служит фоном объекта и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »