scroll рисовать самому
От: race1 Россия  
Дата: 07.01.05 15:04
Оценка:
как можно самому рисовать стандартный скролл. например, если в листбоксе будет больше элементов, чем может влезть в окно, то появится скролл. как мне его самому рисовать?
Re: scroll рисовать самому
От: Arioch  
Дата: 07.01.05 16:00
Оценка:
The stars so gaily glistened... (Fri, 07 Jan 2005 15:04:34 GMT @669)
...while the fading voice of race1 whispered through the darkness:

r> как мне его самому рисовать?


Где рисовать?
Чем не подходит TSrollBar ?

--
WinAMP://none: WinAMP is suffocated
http://Arioch.nm.ru/FL/Fidolook_SL.png
Mail: the)under(Arioch)at(nm)dot(ru ICQ: xmpp://arioch@jabber.ru
Posted via RSDN NNTP Server 1.9
Re[2]: scroll рисовать самому
От: race1 Россия  
Дата: 08.01.05 05:45
Оценка:
Здравствуйте, Arioch, Вы писали:

A>The stars so gaily glistened... (Fri, 07 Jan 2005 15:04:34 GMT @669)

A>...while the fading voice of race1 whispered through the darkness:

r>> как мне его самому рисовать?


A>Где рисовать?

A>Чем не подходит TSrollBar ?

эл-ты списка я уже рисую сам и мне хотелось бы самому рисовать скрол, что бы всё было в едином стиле. но скрол этот необычный, он сам появляется и сам рисуется. а как я могу его нарисовать сам?
Re: scroll рисовать самому
От: Григорий Поваров Россия  
Дата: 11.01.05 10:10
Оценка:
> как можно самому рисовать стандартный скролл. например, если в листбоксе будет больше элементов, чем может влезть в окно, то появится скролл. как мне его самому рисовать?

если без тем, то DrawFrameControl с uType := DFC_SCROLL,
если с темами, то через ThemeServices.GetElementDetails и ThemeServices.DrawElement.

другой путь -- в перегруженной CreateParams указать Style := Style or WS_VSCROLL or WS_HSCROLL (в зависимости от того, какие нужны), а когда нужен другой вариант делать RecreateWnd.
Posted via RSDN NNTP Server 1.9
Re[2]: scroll рисовать самому
От: race1 Россия  
Дата: 12.01.05 09:17
Оценка:
Здравствуйте, Григорий Поваров, Вы писали:

>> как можно самому рисовать стандартный скролл. например, если в листбоксе будет больше элементов, чем может влезть в окно, то появится скролл. как мне его самому рисовать?


ГП>если без тем, то DrawFrameControl с uType := DFC_SCROLL,

ГП>если с темами, то через ThemeServices.GetElementDetails и ThemeServices.DrawElement.

ГП>другой путь -- в перегруженной CreateParams указать Style := Style or WS_VSCROLL or WS_HSCROLL (в зависимости от того, какие нужны), а когда нужен другой вариант делать RecreateWnd.


вот есть у меня картинка, её я хочу нарисовать на сдандартном сроле. какие сообщения мне нужно перехватывать что бы это сделать. или может убарть системный скрол и самому его сделать (CreateWindowEx("SCROLLBAR) а там ловить его сообщения?
Re: scroll рисовать самому
От: ak_miass Россия  
Дата: 12.01.05 12:33
Оценка:
Здравствуйте, race1, Вы писали:

R>как можно самому рисовать стандартный скролл. например, если в листбоксе будет больше элементов, чем может влезть в окно, то появится скролл. как мне его самому рисовать?


С WM_NCPAINT ничего не получится?
Re[3]: scroll рисовать самому
От: Григорий Поваров Россия  
Дата: 14.01.05 10:47
Оценка:
>>> как можно самому рисовать стандартный скролл. например, если в листбоксе будет больше элементов, чем может влезть в окно, то появится скролл. как мне его самому рисовать?

> вот есть у меня картинка, её я хочу нарисовать на сдандартном сроле. какие сообщения мне нужно перехватывать что бы это сделать. или может убарть системный скрол и самому его сделать (CreateWindowEx("SCROLLBAR) а там ловить его сообщения?


Что-то я перестал понимать, что тебе надо...

Вариант i. Твое чувство прекрасного протестует против того, что нарисовали в MS и ты хочешь сделать свой (сам нарисовать, сам рулить), тогда это ничем не отличается от того, как ты делаешь весь свой остальной контрол: в Paint рисуем что-то свое, по MouseDown и KeyDown рулим.

Вариант ii. Тебя устраивает как выглядит Scroll от MS, но тебе чтобы он был не справа и снизу от окна, а как-то по-другому, тогда как и в i рисуешь в Paint, рулишь по MouseDown и KeyDown, но в Paint рисуем при помощи DrawFrameControl \ ThemeServices.DrawElement.

Вариант iii. Тебя полностью устраивает Scroll от MS. Ты только хочешь им рулить, тогда в CreateParams указываем Style := Style or WS_VSCROLL or WS_HSCROLL, а потом традиционно рулим по MouseDown и KeyDown.

Естественно, что в зависимости от варианта рулить приходиться по-разному: так в случае i и ii почти обо всем придется заботиться самому, в iii все проще -- через SetScrollInfo.

Так что тебе надо?
Posted via RSDN NNTP Server 1.9
Re: scroll рисовать самому
От: drjeff  
Дата: 14.01.05 12:48
Оценка: -1
у-у-у Как все запущено
На самом деле это нетривиальная задача. Когда мне это потребовалось — единственное приемлемое решение, которое я нашел:
— пишем TConrtol — c функциональностью ScroolBar
— размещаем его НАД стандарьным скролом
— ловим мышиные эвенты и передаем окну
— ловим эвенты от окна и при скролировании и т.д. читаем свойства скрул бара (позицию, размер ползунка и т.д) и рисуем свой скрул по этим параметрам.

Детально я не скажу как это делать, но при необходимости большой на следюущей неделе могу кинуть пример (исходники на компе у брата дома).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.