Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
В некоторые моменты времени на hWnd может быть повешен таймер: SetTimer(hWnd, ID_TIMER, pause, 0); который через указанный промежуток времени пошлёт в процедуру LRESULT SearchResultImportProcessDlg::WndProc(UINT wMsg,WPARAM wParam,LPARAM lParam) сообщение WM_TIMER, в нём первой строкой делаю KillTimer(hWnd, ID_TIMER); Пользователь жмёт кнопку. В этот момент важно понять, работал ли таймер на момент нажатия кнопки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 15:00 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
хорошо я согласенВ этот момент важно понять, работал ли таймер на момент нажатия кнопки? Что значит "работал" в твоём понимании? Был вызван SetTimer()? Это опознаётся по хэндлу, который эта функция возвращает и который можно обнулять после вызова KillTimer(). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 15:06 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
Работает программулина со сложной логикой. Время от времени необходимы паузы - кто-то там где-то там вызывает SetTimer на полминуты, и в WM_TIMER вызывается killtimer и функция, которая продолжает анализ в дебрях логики. Пользователь жмёт кнопку, вызывается функция-обработчик нажатия на кнопку. И вот в этот момент хорошо бы понять - как опознать по хендлу окна, был ли вызван SetTimer? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 15:11 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
Что мешает реализовать volatile флаг работы таймера и изменять его из любого места только через InterlockedCompareExchange? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 16:08 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
rdb_devЧто мешает реализовать volatile флаг работы таймера и изменять его из любого места только через InterlockedCompareExchange? >volatile Это всё равно что есть руками в наши дни. Есть же std::atomic_flag ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 16:10 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
хорошо я согласенРаботает программулина со сложной логикой. Время от времени необходимы паузы - кто-то там где-то там вызывает SetTimer на полминуты, и в WM_TIMER вызывается killtimer и функция, которая продолжает анализ в дебрях логики. Пользователь жмёт кнопку, вызывается функция-обработчик нажатия на кнопку. И вот в этот момент хорошо бы понять - как опознать по хендлу окна, был ли вызван SetTimer? посредством SetProp повесь признак ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 16:10 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
NekZ, для синронного (WM_TIMER) таймера это излишне ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 16:18 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
NekZ>volatile Это всё равно что есть руками в наши дни. Есть же std::atomic_flagДа хоть как! Суть от этого не меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 16:23 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
хорошо я согласенВремя от времени необходимы паузы "Уже смешно." (с) Загони сложную логику в фоновый поток и не морщь себе мозг с таймером. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 16:51 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
Ааа, я понял. Нужен std::mutex, чтобы ИЛИ дать работать функции таймера, ИЛИ дать работать обработчику кнопки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 05:19 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
CEMbНужен std::mutex, чтобы ИЛИ дать работать функции таймера, ИЛИ дать работать обработчику кнопки. Они и так в одном потоке. Параллельное выполнение невозможно по определению. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 11:33 |
|
||
|
SetTimer: как узнать, запущен ли таймер?
|
|||
|---|---|---|---|
|
#18+
хорошо я согласенВ некоторые моменты времени на hWnd может быть повешен таймер: SetTimer(hWnd, ID_TIMER, pause, 0); который через указанный промежуток времени пошлёт в процедуру LRESULT SearchResultImportProcessDlg::WndProc(UINT wMsg,WPARAM wParam,LPARAM lParam) сообщение WM_TIMER, в нём первой строкой делаю KillTimer(hWnd, ID_TIMER); Пользователь жмёт кнопку. В этот момент важно понять, работал ли таймер на момент нажатия кнопки? не совсем понятна логика действий, вот особенности таймера: KillTimer возвращает результат. "Забавно", но если таймер не установлен окну, то False убитый таймера не означает, что сообщение уже не отправлено (оно кстати низкоприоритетное) и оно вполне может быть в очереди потока выбить сообщение из очереди можно с помощью PeekMessage ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 10:11 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39652342&tid=2017842]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 172ms |

| 0 / 0 |
