Форум: "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.034 c