На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Поведение очереди сообщений при большом количестве сообщений, В очередь ставится 1000 сообщений в секунду, будут ли они все обработаны?
    Есть главная форма, на форме цветной кружок, есть поток, который раз в 1 мили секунду меняет цвет этого элемента (кружка). Вопрос, эти изменения цвета забьют системную очередь сообщений формы, или они будут как то прореживаться? Речь идет о компоненте TShape.
    Сообщение отредактировано: a_n_y_a -
      Цитата a_n_y_a @
      есть поток, который раз в 1 мили секунду меняет цвет этого элемента (кружка)

      Какой в этом смысл, если при стандартной частоте монитора в 60 Гц обновление экрана происходят только раз в 1/60 = 16.7 мс ?!

      Цитата a_n_y_a @
      Вопрос, эти изменения цвета забьют системную очередь сообщений формы, или они будут как то прореживаться?

      Если ты просто изменяешь цвет кисти или пера TShape (не вызывая при этом никаких методов принудительной перерисовки формы), то никакие сообщения в системную очередь вообще не посылаются. При этом просто вызывается функция InvalidateRect для области формы, занятой TShape, которая помечает эту область как "инвалидную", т.е. требующую перерисовки. А когда производить эту перерисовку, ОС решает сама и делает это не чаще тех же 10-15 мс. Поэтому из твоих 1000 изменений в секунду более 90% фактически идут коту под хвост - просто по 10 с лишним раз помечают уже помеченный инвалидный регион окна формы для его перерисовки в будущем
        Прореживаться никак не будут, но при забитии PostMessage вернет False
        Codero ergo sum
        // Программирую — значит, существую
          Цитата Fr0sT @
          Прореживаться никак не будут

          Смотря какие. WM_PAINT и WM_TIMER могут "прореживаться".
          Насколько я понимаю, в очереди м.б. только по одному WM_PAINT для каждого окна
          Сообщение отредактировано: leo -
            a_n_y_a, WM_PAINT имеет один из самых низких приоритетов в очереди сообщений потока, так что ни систему, ни твою прогу эта твоя перерисовка особо не нагрузит.
            Кто рано встает, тому целый день спать хочется
              Цитата Krid @
              WM_PAINT имеет один из самых низких приоритетов в очереди сообщений потока

              Точнее не "один из", а самый низкий - Get\PeekMessage выдают WM_PAINT только в том случае, когда нет никаких других сообщений в очереди.

              Цитата Krid @
              так что ни систему, ни твою прогу эта твоя перерисовка особо не нагрузит.

              Тем не менее пытаться что-то "перерисовывать" 1000 раз в сек - это глупо, т.к. ни человеческий глаз, ни соответственно монитор и ОС на такое комариное мелькание просто не рассчитаны. Реальное обновление экрана происходит не чаше 60-75 раз в сек. Соотв-но и перерисовку нужно делать примерно с такой же или более низкой частотой.
                Да , полностью согласен :yes:
                Сообщение отредактировано: Krid -
                Кто рано встает, тому целый день спать хочется
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script Execution time: 0,0969 ]   [ 18 queries used ]   [ Generated: 12.11.19, 15:59 GMT ]