Допустим я хочу, чтобы вместо стандартного скролбара был другой, разноцветный и красивый. Также предположим, что я хочу это сделать в большом уже написанном проекте.
Как можно такое сделать?
Унаследовать CMyScrollBar от CScrollBar, перегрузить OnDraw и как-то подсунуть CListCtrl (какой-нить SubClassDlgItem...)? Буду раз любым предложениям/ссылкам.
Здравствуйте, 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
Здравствуйте, 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
Здравствуйте, 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.
Упрощаю вопрос: как можно _просто_ перекрасить (ну их, эти бмпешки) скролбар?
Здравствуйте, 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
Там так к ничему хорошему и не пришли.
Но все равно спасибо.
Здравствуйте, 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. Для скроллбаров его нет.