Форум: "WinAPI";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизПравильный 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c