Custom scrollbar
-
- Membru++
- Posts: 687
- Joined: 10 Sep 2008, 21:40
- Judet: Cluj
Custom scrollbar
Ce solutie ar fi sa customizez scrollbar-ul unui control ? Am gasit ceva aici, si am incercat sa cusomizez scrollbar-ul unui gridcontrol ... incercarea este atasata ca aplicatie de test ... arata naspa, dar o mai luam eu la pila, daca mergea in aplicatia reala ... insa, acel grid-control, imi trebuie intr-un dialogbar (in situatia reala), si in momentul cand am implementat Solutia de mai sus in dialogbar, toate au luat-o razna (anomalii de focus, de redesenare, etc.) ... banui ca din cauza functiilor globale folosite de aceasta solutie ...
Intrebarea mea este, ce alte slutii ar fi pentru customizarea scrollbar-ului standard pentru un control windows ? Orice idee, link, indrumare, ar fi superbine venita !
Multumesc anticipat.
Intrebarea mea este, ce alte slutii ar fi pentru customizarea scrollbar-ului standard pentru un control windows ? Orice idee, link, indrumare, ar fi superbine venita !
Multumesc anticipat.
- Attachments
-
- TestGridWithSkinScroll.zip
- (189.46 KiB) Downloaded 413 times
- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: Custom scrollbar
Tot nu ne-am lasat de macelarit gridul lui Chris...
Mizeriile alea de "custom scrollbar" luate de la Codeproject stau pe grid ca nuca pe perete.
Pana gasim o solutie, vezi si raspunsul de la Codeguru: http://forums.codeguru.com/showthread.p ... ost2172331
De curiozitate, la ce bun sa schimbi culoarea la scrollbar?
Mizeriile alea de "custom scrollbar" luate de la Codeproject stau pe grid ca nuca pe perete.

Pana gasim o solutie, vezi si raspunsul de la Codeguru: http://forums.codeguru.com/showthread.p ... ost2172331
De curiozitate, la ce bun sa schimbi culoarea la scrollbar?
Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
-
- Membru++
- Posts: 687
- Joined: 10 Sep 2008, 21:40
- Judet: Cluj
Re: Custom scrollbar
In acel dialogbar am pus un CGridCtrl (un pic customizat) pentru a face o lista cu item-uri text, bitmap-uri, etc., totul pe fond negru ... Functioneaza, dar sefului meu nu-i place scrollbar-ul standard ... m-a pus sa-l fac negru/gri ... si la asta imi storc neuronul ...
- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: Custom scrollbar
Spune-i ca de la primavara nu se mai poarta scrollbarurile negru-gri. 

Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
-
- Membru++
- Posts: 687
- Joined: 10 Sep 2008, 21:40
- Judet: Cluj
Re: Custom scrollbar
Daca as putea, i-as spune-o ! 

- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: Custom scrollbar
Problema e daca merita sau nu efortul de a schimba ceva in aspectul standard. Daca se da o caruta de parale, atunci da, merita. 
Initial ma gandeam sa-ti spun sa tratezi WM_NCPAINT si sa desenezi acolo scrollbar-urile. Am icercat insa si nu merge. Altceva n-am gasit inca.
Arunca un ochi in MSDN la Visual Styles.
N-am prea sapat pe-acolo insa presupun ca ai putea sa schimbi tema unei fereste cu una cu scrollbar-uri care a arate asa cum vrea sefu.

Initial ma gandeam sa-ti spun sa tratezi WM_NCPAINT si sa desenezi acolo scrollbar-urile. Am icercat insa si nu merge. Altceva n-am gasit inca.
Arunca un ochi in MSDN la Visual Styles.
N-am prea sapat pe-acolo insa presupun ca ai putea sa schimbi tema unei fereste cu una cu scrollbar-uri care a arate asa cum vrea sefu.
Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
-
- Membru++
- Posts: 687
- Joined: 10 Sep 2008, 21:40
- Judet: Cluj
Re: Custom scrollbar
Incerc sa vad ce iese ...ai putea sa schimbi tema unei fereste cu una cu scrollbar-uri care a arate asa cum vrea sefu
-
- Membru++
- Posts: 687
- Joined: 10 Sep 2008, 21:40
- Judet: Cluj
Re: Custom scrollbar
Cred ca nu sant departe:
Nu functioneaza inca, dar cred ca asta e drumul ...
Code: Select all
void CGridCtrlExt::OnDraw(CDC* pDC)
{
// draw the grid
HTHEME hTheme = OpenThemeData(m_hWnd, L"WINDOW");
if(NULL != hTheme)
{
CRect rect;
GetClientRect(&rect);
DrawThemeBackground(hTheme, pDC->GetSafeHdc(), WP_VERTSCROLL, VSS_NORMAL, &rect, NULL);
CloseThemeData(hTheme);
}
}
-
- Membru++
- Posts: 687
- Joined: 10 Sep 2008, 21:40
- Judet: Cluj
Re: Custom scrollbar
Am incercat in modul urmator:
insa nu pare sa stie de scrollbar-ul vertical, CScrollBar* pScrollbar = GetScrollBarCtrl(SB_VERT); returneaza intotdeauna NULL ... de ce ?
Ciudat ...
Code: Select all
HTHEME hTheme = OpenThemeData(m_hWnd, L"WINDOW");
// HTHEME hTheme = OpenThemeData(m_hWnd, L"MFCGridCtrl");
if(NULL != hTheme)
{
CScrollBar* pScrollbar = GetScrollBarCtrl(SB_VERT);
if(NULL != pScrollbar->GetSafeHwnd()) // <-- is always null
{
CRect rect;
pScrollbar->GetWindowRect(&rect);
pDC->FillSolidRect(&rect, RGB(255, 255, 0));
DrawThemeBackground(hTheme, pDC->GetSafeHdc(), WP_VERTSCROLL, VSS_NORMAL, &rect, NULL);
}
CloseThemeData(hTheme);
}
Ciudat ...
-
- Membru++
- Posts: 687
- Joined: 10 Sep 2008, 21:40
- Judet: Cluj
Re: Custom scrollbar
Desi totul pare correct, totusi nu functioneaza

Code: Select all
void CGridCtrlExt::OnDraw(CDC* pDC)
{
// draw the grid
HTHEME hTheme = OpenThemeData(m_hWnd, L"WINDOW");
// HTHEME hTheme = OpenThemeData(m_hWnd, L"MFCGridCtrl");
if(NULL != hTheme)
{
if(WS_VSCROLL & GetStyle())
{
SCROLLBARINFO si;
si.cbSize = sizeof(SCROLLBARINFO);
GetScrollBarInfo(OBJID_VSCROLL, &si);
CRect rect(si.rcScrollBar);
pDC->FillSolidRect(&rect, RGB(255, 255, 0));
DrawThemeBackground(hTheme, pDC->GetSafeHdc(), WP_VERTSCROLL, VSS_NORMAL, &rect, NULL);
}
CloseThemeData(hTheme);
}
}
-
- Membru++
- Posts: 687
- Joined: 10 Sep 2008, 21:40
- Judet: Cluj
Re: Custom scrollbar
Ce e curios e ca, daca pun un rectangle cat clientul, vad doar galben in fata ochilor
)

Code: Select all
void CGridCtrlExt::OnDraw(CDC* pDC)
{
// draw the grid
HTHEME hTheme = OpenThemeData(m_hWnd, L"WINDOW");
// HTHEME hTheme = OpenThemeData(m_hWnd, L"MFCGridCtrl");
if(NULL != hTheme)
{
if(WS_VSCROLL & GetStyle())
{
CRect rect;
GetClientRect(&rect);
pDC->FillSolidRect(&rect, RGB(255, 255, 0));
DrawThemeBackground(hTheme, pDC->GetSafeHdc(), WP_VERTSCROLL, VSS_NORMAL, &rect, NULL);
}
CloseThemeData(hTheme);
}
}
-
- Membru++
- Posts: 687
- Joined: 10 Sep 2008, 21:40
- Judet: Cluj
Re: Custom scrollbar
eu cred ca ar merge acest cod, dar, fiind pus in OnDraw, cred ca sistemul de operare redeseneaza dupa aceea din nou scrollbar-urile ...mesajflaviu wrote:Desi totul pare correct, totusi nu functioneaza![]()
Code: Select all
void CGridCtrlExt::OnDraw(CDC* pDC) { // draw the grid HTHEME hTheme = OpenThemeData(m_hWnd, L"WINDOW"); // HTHEME hTheme = OpenThemeData(m_hWnd, L"MFCGridCtrl"); if(NULL != hTheme) { if(WS_VSCROLL & GetStyle()) { SCROLLBARINFO si; si.cbSize = sizeof(SCROLLBARINFO); GetScrollBarInfo(OBJID_VSCROLL, &si); CRect rect(si.rcScrollBar); pDC->FillSolidRect(&rect, RGB(255, 255, 0)); DrawThemeBackground(hTheme, pDC->GetSafeHdc(), WP_VERTSCROLL, VSS_NORMAL, &rect, NULL); } CloseThemeData(hTheme); } }
- Attachments
-
- TestGrid.zip
- (210.48 KiB) Downloaded 421 times