Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Скроллинг колесиком в моих приложениях   Найти похожие ветки 

 
марсианин ©   (2004-03-28 14:41) [0]

Мужики, как сделать скроллинг не при прокрутке, а при нажатии на колесико? чтоб как Internet Explorer появился кружочек со стрелочками и перемещением мыши осуществлялся плавный скроллинг?


 
Cobalt ©   (2004-03-28 17:34) [1]

OnMouseWheel


 
ПЛОВ   (2004-03-28 17:36) [2]

Просто...
Обрабатываеш нажатие средней кнопки крысы (колесика), меняешь курсор, а дальше замеряя позицию этого самого курсора через апи делаешь прокрутку...
см. GetScrollPos, GetScrollPos и т.п.


 
Diamond Cat ©   (2004-03-28 23:19) [3]

я в свое время долго боролся с этим,и выяснил некоторые вещи, котрые шли в разрез с хелпами и msdn-ом, к примеру сообщение wm_mowsewheel, которое генериться при прокрутке колесика мыши, должно иметь в качестве ресультата 0 если все прошло гладко и все остальное если сообщенеие не прошло, так вот большинство окон именно так и делает а к примеру ворд чхает на это и в ответе передает все что его душе придется . к тому же не все окна обрабатывают это сообщение к примеру winsight32, в мсдн пишут , что типа это сообщение пробрасывается по цепочке окон к в сторону родительского, пока не будет обработано, или не достигнет верхнего уровня, а теперь предположим что некоторые особо одаренные написали скрол бар в другой цепочке по отношению к прокручиваемому окну. вобщем полный абзац. Если интересно, могу слить результаты моих попыток, я умудрился добиться примерно 99% срабатываемости. причем в результате я отказался от wm_mousewheel , а пользовался wm_h/vsroll и wm_keyup/down c параметром vk_left/right/up/down/


 
марсианин ©   (2004-03-30 17:25) [4]

2Cobalt ©   (28.03.04 17:34) [1]

я вообще-то на АПИ пишу, нету OnMouseWheel, а сообщение WM_MOUSEWHEEL при нажатии на колесико не посылается -- проверено

мне просто было интересно, существуют ли стандартные средства АПИ поддержки этого явления? или каждое приложение делает это по-своему?

я посмотрел winsight32-ом какие сообщения получает IE при скроллинге, (к сожалению дома смотрел, поэтому лог тоже дома) помню точно, там было какое-то сообщение WM_USER+0x00007C12 кажись, затем повторения WM_TIMER, WM_MOUSEMOVE, WM_SETCURSOR.. WM_H/VSCROLL не замечено..

я сделал как предлагает ПЛОВ
т.е. на WM_MBUTTONDOWN включается таймер, захватывается крыса (SetCapture), запоминается точка куда ткнули, и сам меняю курсор (точне буду менять, потому что еще не нарисовал курсоры, а может есть стандартный???).

каждый тик таймера отслеживается положение курсора относит. исходной точки и вычисляю новые позиции скроллбаров, посылаю WM_H/VSCROLL (хотя можно и черес SetScrollPos, SetScrollInfo)

при любом нажатии останавливаю таймер, ReleaseCapture, исходный курсор...

это работает, пусть криво, но работает... может есть способ сделать это по-изящнее?

2 Diamond Cat © пришли свой вариант, плз, интересно как ты сделал..


 
Diamond Cat ©   (2004-03-30 19:02) [5]


> (хотя можно и черес SetScrollPos, SetScrollInfo)
без мазы, все равно придется дать понять окну владеющему этими скролами, что скрол передвинут, а то скролл-то подвинется а вот окно нет, примерчик высылаю


 
Diamond Cat ©   (2004-03-30 19:03) [6]

ага , высылаю, а куда слать??? ты в анкете мыло не прописал :о)


 
марсианин ©   (2004-03-30 22:35) [7]

специально же вписал alexey_go@mail.ru ))


 
Diamond Cat ©   (2004-03-30 23:44) [8]

звиняй, протормозил, лови
(краткость - сестра нашего брата)



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.038 c
1-1083231666
Goida
2004-04-29 13:41
2004.05.16
Запуск программой себя же...


14-1082715200
lika
2004-04-23 14:13
2004.05.16
Исходники почтового клиента


4-1080557192
Nic
2004-03-29 14:46
2004.05.16
Два вопросика


1-1083057757
ByPass
2004-04-27 13:22
2004.05.16
Memory Mapped Port


14-1082632846
vopros
2004-04-22 15:20
2004.05.16
Не могу завести компьютер с XP в домен.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский