Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2021-05-21 12:11:25 |
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Скажем так: в том примере возникает "конфликт" двух функций, меняющих положение ползунка: во-первых, это действия пользователя, а во-вторых - автоматическое изменение положения по мере проигрывания файла. Если бы я столкнулся с такой проблемой при написании программы, то я бы при поступлении события WM_HSCROLL с SB_THUMBTRACK установил бы флаг "Ползунок не тронь!", и проверял его перед установкой позиции. А при поступлении WM_HSCROLL с SB_ENDSCROLL - снимал бы этот флаг.
Да, и кстати, "правильные пацаны" используют GetScrollInfo для определения позиции ползунка Ибо сказано: "MSDN:WM_HSCROLL" писал(а): Note that the WM_HSCROLL message carries only 16 bits of scroll box position data. Thus, applications that rely solely on WM_HSCROLL (and WM_VSCROLL) for scroll position data have a practical maximum position value of 65,535. ------------ Дoбавленo: Чуть более общий сценарий: вообще всегда при поступлении WM_xSCROLL ставим сий флаг, а снимаем его:
А в данном конкретном примере нам надо обеспечить посылку onPosition до того, как мы в очередной раз программно подвинем ScrollBar. |
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2021-05-21 12:11:26 |
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
iarspider писал(а): Скажем так: в том примере возникает "конфликт" двух функций, меняющих положение ползунка: во-первых, это действия пользователя, а во-вторых - автоматическое изменение положения по мере проигрывания файлаЛибо покажи схему, в которой "автоматическое изменение положения по мере проигрывания файла" сделано не от таймера, либо не пудри людям мозги. События в одном потоке НЕ КОНФЛИКТУЮТ. Если разные потоки, то эти флаги, вместе с их проверками, называются критические секции - для потоков одного процесса, и мьютексы - для разных. |
|||
карма: 9 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2021-05-21 12:11:26 |
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
HELP писал(а): VSh, я не предоставил схему, потому что она есть в папке examplesА имя файла не написал, потому-что это "очевидно". Так что-ли |
|||
карма: 9 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2021-05-21 12:11:26 |
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Не надо делать, не тебе сказано было
Подели этот Position на 10 при внесение в ScrollBar, и умнож на те же 10 при установке Position из ScrollBar-а И не мучайся Все понятно в общем: полный путь к файлу написать - религия не позволяла |
|||
карма: 9 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2021-05-21 12:11:26 |
|||
карма: 0 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
HELP, ты что, в философы записался? Теоретик, блини...
А то выдал: HELP писал(а): А вещи, которые очевидны для новичков, совсем даже не очевидны для админом и профессионалов! |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Galkov, пардон, согласен, соврал. В тестовой схеме всё работает...
code_7996.txt Но тогда я совсем не понимаю, "где собака порылась" (с) ------------ Дoбавленo: Ага, так мы ещё и разные схемы исследуем?! Я-то Bass_Test изучаю... |
|||
карма: 1 |
| ||
файлы: 1 | code_7996.txt [452B] [287] |
Ответов: 9906
Рейтинг: 351
|
|||
iarspider, а мне теперь уже показалось, что мы говорили о разных "конфликтах"
Я-то говорил о кодовых, когда все громко крякает... А в смысле "функционального" - да, таймер надо останавливать на время "таскания". ------------ Дoбавленo: Кстати, про "правильных пацанов" и GetScrollInfo... Давно не возился, но не очень уверен, что GetScrollInfo вернет адекватную информацию ДО окончания таскания Есть подозрения, что нет Ты проверял ------------ Дoбавленo: BTW: еше раз про "правильных пацанов" - я не очень хорошо знаю их возможности А вот про "белых людей" могу сказать: читая с частотой 16КГц всего 2 бита (а не 16) информации с микронного датчика координаты - не имеют проблем. Даже БЕЗ алгоритмических ограничений на скорость (на ускорение есть ограничение - ~20g) |
|||
карма: 9 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Про GetScrollInfo - вот что пишет дядя Билли:
MSDN:GetScrollInfo писал(а): To get the 32-bit position of the scroll box (thumb) during a SB_THUMBTRACK request code in a WM_HSCROLL or WM_VSCROLL message, call GetScrollInfo with the SIF_TRACKPOS value in the fMask member of the SCROLLINFO structure. The function returns the tracking position of the scroll box in the nTrackPos member of the SCROLLINFO structure. This allows you to get the position of the scroll box as the user moves it. The following sample code illustrates the technique.
То бишь - обязуется, но только если попросим правильно (c SIF_TRACKPOS, а не с SIF_POS). Последний пассаж про "правильных пацанов" несколько не очень понял. |
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Кое-что я подзабыл, конечно...
Но что-то мне кажется, что SB_THUMBTRACK и SB_THUMBPOSITION - не одно и то же... Конкретный вопрос: умничать будешь, или пальцем показывать Последний пассаж означает, что существуют простые алгоритмические средства, позволяющие не терять полную (например 32 бита) информацию при регулярном получение неполной (16 бит). Если кое что гарантировано, например, что нет больших (>32767) скачков между двумя соседними сеаесами получения неполной (16 бит) ------------ Дoбавленo: HELP писал(а): А вещи, которые очевидны для новичков, совсем даже не очевидны для админом и профессионалов!HELP, вбей себе в мозг Очевидность - понятие относительное "Совсем даже не очевидны" для любого, кто не видит происходящего у тебя на экране У этого вопроса борода такая, что и подумать страшно. К примеру я знаю отношение к этому вопросу почти любого постоянного посетителя Знаю, что "вбей себе в мозг" сработает с вероятностью не больше 10% Но, в принципе, мне запомнилось древнее высказывание Dilma на этот предмет: http://hiasm.com/forum.html?q=3&p=11273#p11273 Обратите внимание на дату А конкретные кодовые соображения про масштабирование и выключение таймера примерно таковы
|
|||
карма: 9 |
|
Ответов: 1328
Рейтинг: 69
|
|||
HELP писал(а): можно ли перематывать музуку другим компонентомМне больше нравится TrackBar code_7998.txt |
|||
карма: 2 |
| ||
файлы: 1 | code_7998.txt [1.4KB] [332] |