Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
марсианин ©   (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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.041 c
1-1083355606
konstantinov
2004-05-01 00:06
2004.05.16
Автоматически уничтожаемое окно


4-1080284661
nuflin
2004-03-26 10:04
2004.05.16
Подскажите, какие значения должны быть присвоены переменным в


1-1083651183
zenaev
2004-05-04 10:13
2004.05.16
Закрытие приложения


7-1081168895
geg
2004-04-05 16:41
2004.05.16
Печать в Win 98


3-1082710900
explorer
2004-04-23 13:01
2004.05.16
Добавление данных в БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский