Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
2-1133873684
Zilog
2005-12-06 15:54
2005.12.25
Всегда ли необходимо инсталлировать BDE?


11-1114680634
Vladimyr
2005-04-28 13:30
2005.12.25
Applet в другом потоке


1-1133032002
heady
2005-11-26 22:06
2005.12.25
Получить активную страницу


3-1131295247
Michael5
2005-11-06 19:40
2005.12.25
Подскажите, незаполненные поля БД увеличивают размер файла или не


2-1134294907
Kot
2005-12-11 12:55
2005.12.25
Реидексация





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