Заменить ScrollBar в CListCtrl
От: Tan4ik Россия  
Дата: 13.10.04 12:17
Оценка:
Допустим я хочу, чтобы вместо стандартного скролбара был другой, разноцветный и красивый. Также предположим, что я хочу это сделать в большом уже написанном проекте.
Как можно такое сделать?
Унаследовать CMyScrollBar от CScrollBar, перегрузить OnDraw и как-то подсунуть CListCtrl (какой-нить SubClassDlgItem...)? Буду раз любым предложениям/ссылкам.
---
С уважением,
Лазарев Андрей
Re: Заменить ScrollBar в CListCtrl
От: algol Россия about:blank
Дата: 13.10.04 13:33
Оценка: 15 (1)
Здравствуйте, Tan4ik, Вы писали:

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

T>Как можно такое сделать?
T>Унаследовать CMyScrollBar от CScrollBar, перегрузить OnDraw и как-то подсунуть CListCtrl (какой-нить SubClassDlgItem...)? Буду раз любым предложениям/ссылкам.

CodeProject по-прежнему рулит:
How to skin CListCtrl including scrollbars and column headers
Custom Scrollbar Library version 1.1
SkinControls 1.1 — A journey in automating the skinning of Windows controls
Re: Заменить ScrollBar в CListCtrl
От: MicVit  
Дата: 13.10.04 14:04
Оценка: 15 (1)
Здравствуйте, Tan4ik, Вы писали:

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

T>Как можно такое сделать?
T>Унаследовать CMyScrollBar от CScrollBar, перегрузить OnDraw и как-то подсунуть CListCtrl (какой-нить SubClassDlgItem...)? Буду раз любым предложениям/ссылкам.

http://www.rsdn.ru/Forum/Message.aspx?mid=815808&only=1
Автор: MicVit
Дата: 20.09.04

http://www.rsdn.ru/Forum/Message.aspx?mid=816287&only=1
Автор: sercher
Дата: 20.09.04
Re[2]: Заменить ScrollBar в CListCtrl
От: Tan4ik Россия  
Дата: 13.10.04 14:07
Оценка:
Здравствуйте, algol, Вы писали:


A>CodeProject по-прежнему рулит:

A>How to skin CListCtrl including scrollbars and column headers
Предлагают скачать офигительный CListCtrl и вставить вместо своего... Может конечно и придется такое сделать, но... как-то не хочется...

A>Custom Scrollbar Library version 1.1

This library (coolsb_detours) uses a technique called binary-rewriting to hook and intercept all of the standard scrollbar API calls inside USER32.DLL

Не очень хорошо
A>SkinControls 1.1 — A journey in automating the skinning of Windows controls
Тоже хуки и WinXP only.

Упрощаю вопрос: как можно _просто_ перекрасить (ну их, эти бмпешки) скролбар?
---
С уважением,
Лазарев Андрей
Re[2]: Заменить ScrollBar в CListCtrl
От: Tan4ik Россия  
Дата: 13.10.04 14:10
Оценка:
Здравствуйте, MicVit, Вы писали:

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

T>>Как можно такое сделать?
T>>Унаследовать CMyScrollBar от CScrollBar, перегрузить OnDraw и как-то подсунуть CListCtrl (какой-нить SubClassDlgItem...)? Буду раз любым предложениям/ссылкам.

MV>http://www.rsdn.ru/Forum/Message.aspx?mid=815808&only=1
Автор: MicVit
Дата: 20.09.04

MV>http://www.rsdn.ru/Forum/Message.aspx?mid=816287&only=1
Автор: sercher
Дата: 20.09.04


Там так к ничему хорошему и не пришли.
Но все равно спасибо.
---
С уважением,
Лазарев Андрей
Re[3]: Заменить ScrollBar в CListCtrl
От: algol Россия about:blank
Дата: 13.10.04 14:20
Оценка:
Здравствуйте, Tan4ik, Вы писали:

A>>How to skin CListCtrl including scrollbars and column headers

T>Предлагают скачать офигительный CListCtrl и вставить вместо своего... Может конечно и придется такое сделать, но... как-то не хочется...

Там есть исходники. Суть проста — прячутся родные скроллбары и создаются свои:
void CSkinListCtrl::Init()
{
    //another way to hide scrollbars
    InitializeFlatSB(m_hWnd);
    FlatSB_EnableScrollBar(m_hWnd, SB_BOTH, ESB_DISABLE_BOTH);

    CWnd* pParent = GetParent();

    //Create scrollbars at runtime
    m_SkinVerticleScrollbar.Create(NULL, WS_CHILD|SS_LEFT|SS_NOTIFY|WS_VISIBLE|WS_GROUP,CRect(0,0,0,0), pParent);
    m_SkinHorizontalScrollbar.Create(NULL, WS_CHILD|SS_LEFT|SS_NOTIFY|WS_VISIBLE|WS_GROUP,CRect(0,0,0,0), pParent);
    m_SkinVerticleScrollbar.pList = this;
    m_SkinHorizontalScrollbar.pList = this;

    //call this to position the scrollbars properly
    PositionScrollBars();
}


T>Упрощаю вопрос: как можно _просто_ перекрасить (ну их, эти бмпешки) скролбар?


_Просто_ перекрашивают через custom draw. Для скроллбаров его нет.
Re[3]: Заменить ScrollBar в CListCtrl
От: MicVit  
Дата: 13.10.04 14:28
Оценка:
T>Там так к ничему хорошему и не пришли.
T>Но все равно спасибо.

У меня эти FlatScrollBars прекрасно работают. И главное — переделок минимум.
Есть только оговорка насчет поддержки в Comctl32.dll versions 6.00.
Но насколько я понимаю, если не требуется использовать спец особенностей стилей xp, то проблем быть не должно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.