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

Вниз

Правильный Scroll Box   Найти похожие ветки 

 
GuAV ©   (2005-10-21 14:39) [0]

На прокручивание колеса мыши в многосторчном edit"е, richedit"e или twebbrowser"e реагируют скролбары. При нажатии на колесо появляется круг со стрелками, двигая мышь можно прокручивать контент в ныжном направлении и с нужной скоростью.

Подозреваю, что все эти фичи реализованы в windows api и готовы быть использованы в своём контроле. Однако, нет никаких идей, как найти это в MSDN.

Обычный scrollbox такой функциональностью не обладает. Как наделить свой контрол такой функциональностью ?

Буду рад ссылке на соответствующие функции/сообщения/ect, или примеру своего контрола, особенно примеру "самоделнього" memo на delphi с такой прокруткой.


 
clickmaker ©   (2005-10-21 14:48) [1]

WM_MOUSEWHEEL


 
GuAV ©   (2005-10-21 15:25) [2]


> clickmaker ©   (21.10.05 14:48) [1]


Обработка этого сообщения позволит только обрабатывать прокрутку колеса; мне нужна также стандартная реакцция на нажатие колеса. Такая же, как, например в ObjectInspector, в котором не помещаются все свойства и отображён ScrollBar.


 
clickmaker ©   (2005-10-21 15:30) [3]

нажатие колеса - WM_MBUTTONDOWN


 
Leonid Troyanovsky ©   (2005-10-21 15:38) [4]


> GuAV ©   (21.10.05 15:25) [2]

> > clickmaker ©   (21.10.05 14:48) [1]

> Обработка этого сообщения позволит только обрабатывать прокрутку
> колеса; мне нужна


У TControl есть protected methods

   function DoMouseWheel
   function DoMouseWheelDown
   function DoMouseWheel

переопредели их. Вот, собс-но, и все.

--
Regards, LVT.


 
GuAV ©   (2005-10-21 17:11) [5]


> clickmaker ©

>Leonid Troyanovsky ©


Спасибо вам за ответы, но это не полностью отвечает на мой вопрос. При нажатии колеса в стандартных ListBox,
Memo,  RichEdit, twebbrowser при наличии вертикального scrollbar"а курсор меняется и появляется круг со стрелками; можно, двигая мышь, прокручивать текст в разные стороны и с разными скоростями; и я подозреваю, что можно заставить windows делать это же для своего контрола, или, хотя бы получить эти символы и курсоры.


 
clickmaker ©   (2005-10-21 17:18) [6]


>  При нажатии колеса в стандартных ListBox,
> Memo,  RichEdit, twebbrowser при наличии вертикального scrollbar"а
> курсор меняется и появляется круг со стрелками

ну это на уровне апи. Все эти контролы - обертки для зарегистрированных в системе окон. Создай контрол на основе своего окна со стилем WM_VSCROLL и будет у тебя то же самое


 
Leonid Troyanovsky ©   (2005-10-21 18:08) [7]


> clickmaker ©   (21.10.05 17:18) [6]

> >  При нажатии колеса в стандартных ListBox,
> > Memo,  RichEdit, twebbrowser при наличии вертикального
> scrollbar"а
> > курсор меняется и появляется круг со стрелками
>
> ну это на уровне апи. Все эти контролы - обертки для зарегистрированных
> в системе окон. Создай контрол на основе своего окна со
> стилем WM_VSCROLL и будет у тебя то же самое


Не думаю. Скажем, форма или TScrollBox на это не реагируют.
Скорее всего, эти классы окон должны как-то (где-то) регистрироваться.

--
Regards, LVT.


 
GuAV ©   (2005-10-21 21:32) [8]

После исследований выяснилось:
Для ListBox и Memo, для RichEdit и для WebBrowser - три различных реализации этой фичи.
Поведение во всех случаях различно.
Картинки и курсоры хранятся в COMCTL32.DLL, riched20.dll, mfc70.dll и других файлах, при этом самого круга нигде нет, видимо рисуется коммандами gdi.
Класс окна для ListBox и Memo определился как User32_ReaderMode, создать не получилось, для RichEdit это вообще не окно.

Короче, видимо есть только один путь - делать всё самому (можно только картинок и курсоров надёргать). Sad but true.


 
Игорь Шевченко ©   (2005-10-24 11:21) [9]

GuAV ©   (21.10.05 21:32) [8]

Для WinXP и выше:
В ответ на сообщение WM_MBUTTONDOWN нужно вызвать
EnterReaderModeHelper (Wnd: HWND): BOOL; stdcall; из user32.dll
В качестве wnd передать свое окно.


 
GuAV ©   (2005-10-24 17:47) [10]


> Игорь Шевченко ©


Спасибо. Работает.

PS: Как Вы про неё узнали ? Она хоть в SDK объявлена ?


 
Игорь Шевченко ©   (2005-10-24 17:54) [11]

GuAV ©   (24.10.05 17:47) [10]


> Как Вы про неё узнали ?


Узнал по набору функций, эскпортируемых из user32.dll
и еще, то ли в wine, то ли в ReactOS был разговор.


> Она хоть в SDK объявлена ?


Нет.



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

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

Наверх




Память: 0.49 MB
Время: 0.046 c
14-1133262163
CHES
2005-11-29 14:02
2005.12.25
А вы говорите в килограмме 1024 грамма....


2-1134331158
San1
2005-12-11 22:59
2005.12.25
PictureBox


5-1115091998
тихий вовочка
2005-05-03 07:46
2005.12.25
Снова то же вопрос: полярные диаграммы


1-1133331594
leonidus
2005-11-30 09:19
2005.12.25
Помогите пожалуйста перевести код с Си на Delphi


14-1133627059
АЗИМУТ
2005-12-03 19:24
2005.12.25
Лог.задачи.