Главная страница
    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.014 c
2-1134011223
HF-Trade
2005-12-08 06:07
2005.12.25
Сортировка по алфавиту Popupmenu


14-1133531140
Иксик
2005-12-02 16:45
2005.12.25
Поговорим о Людях с Большой Буквы. Об Учителях.


2-1133874397
vol
2005-12-06 16:06
2005.12.25
Exel в гриде


2-1134132952
sanich
2005-12-09 15:55
2005.12.25
Имборт из FoxPro в Firebird


6-1126597225
saNat
2005-09-13 11:40
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский