11 :
m_pSkin(GETBUILTINSKIN(SKIN_SYS_SCROLLBAR))
17 memset(&
m_si, 0,
sizeof(SCROLLINFO));
19 m_evtSet.addEvent(EVENTID(EventScroll));
33 if (nPos > (
m_si.nMax - (
int)
m_si.nPage + 1))
37 if (nPos !=
m_si.nPos)
39 if (
m_si.nTrackPos == -1)
41 CRect rcOldThumb =
m_sbHandler.GetPartRect(SB_THUMBTRACK);
42 m_si.nTrackPos = nPos;
43 CRect rcNewThumb =
m_sbHandler.GetPartRect(SB_THUMBTRACK);
45 rcUnion.UnionRect(&rcOldThumb, &rcNewThumb);
49 m_sbHandler.OnDraw(pRT, SScrollBarHandler::kSbRail);
77 __baseCls::OnInitFinished(pNode);
92 m_sbHandler.OnDraw(pRT, SScrollBarHandler::kSbRail);
131 BOOL bRedraw = wParam != 0;
132 LPSCROLLINFO lpScrollInfo = (LPSCROLLINFO)lParam;
133 if (lpScrollInfo->fMask & SIF_PAGE)
134 m_si.nPage = lpScrollInfo->nPage;
135 if (lpScrollInfo->fMask & SIF_POS)
136 m_si.nPos = lpScrollInfo->nPos;
137 if (lpScrollInfo->fMask & SIF_RANGE)
139 m_si.nMin = lpScrollInfo->nMin;
140 m_si.nMax = lpScrollInfo->nMax;
154 LPSCROLLINFO lpScrollInfo = (LPSCROLLINFO)lParam;
155 int nMask = lpScrollInfo->fMask;
156 if (nMask & SIF_PAGE)
157 lpScrollInfo->nPage =
m_si.nPage;
159 lpScrollInfo->nPos =
m_si.nPos;
160 if (nMask & SIF_TRACKPOS)
161 lpScrollInfo->nTrackPos =
m_si.nTrackPos;
162 if (nMask & SIF_RANGE)
164 lpScrollInfo->nMin =
m_si.nMin;
165 lpScrollInfo->nMax =
m_si.nMax;
178 EventScroll evt(
this);
185HRESULT SScrollBar::OnAttrVertical(
const SStringW &value, BOOL bLoading)
187 bool bVert = STRINGASBOOL(value);
189 return bLoading ? S_FALSE : S_OK;
192void SScrollBar::OnScrollUpdateThumbTrack(BOOL bVert,
int nPos)
194 CRect rcOldThumb =
m_sbHandler.GetPartRect(SB_THUMBTRACK);
195 m_si.nTrackPos = nPos;
196 CRect rcThumb =
m_sbHandler.GetPartRect(SB_THUMBTRACK);
198 rcUnion.UnionRect(rcOldThumb, rcThumb);
200 m_sbHandler.OnDraw(pRT, SScrollBarHandler::kSbRail);
206void SScrollBar::OnScrollCommand(BOOL bVert,
int iCmd,
int nPos)
208 int nOldPos =
m_si.nPos;
223 case SB_THUMBPOSITION:
232 if (nOldPos !=
m_si.nPos)
235 OnScrollUpdatePart(bVert, SB_THUMBTRACK);
239void SScrollBar::OnScrollSetTimer(BOOL bVert,
char id, UINT uElapse)
244void SScrollBar::OnScrollKillTimer(BOOL bVert,
char id)
249CRect SScrollBar::GetScrollBarRect(BOOL bVert)
const
254ISkinObj *SScrollBar::GetScrollBarSkin(BOOL bVert)
const
259const SCROLLINFO *SScrollBar::GetScrollBarInfo(BOOL bVert)
const
264int SScrollBar::GetScrollBarArrowSize(BOOL bVert)
const
269const IInterpolator *SScrollBar::GetScrollInterpolator()
const
278int SScrollBar::GetScrollFadeFrames()
const
283BYTE SScrollBar::GetScrollThumbTrackMinAlpha()
const
288void SScrollBar::OnScrollUpdatePart(BOOL bVert,
int iPart)
292 CRect rc = GetScrollBarRect(bVert);
295 m_sbHandler.OnDraw(pRT, SScrollBarHandler::kSbRail);
300 else if (iPart == SB_THUMBTRACK)
302 CRect rc =
m_sbHandler.GetPartRect(SScrollBarHandler::kSbRail);
304 m_sbHandler.OnDraw(pRT, SScrollBarHandler::kSbRail);
308 else if (iPart == SB_PAGEDOWN || iPart == SB_PAGEUP)
312 m_sbHandler.OnDraw(pRT, SScrollBarHandler::kSbRail);
329BOOL SScrollBar::IsScrollBarEnable(BOOL bVert)
const
A class representing an ASCII string.
BOOL SetTimer(char id, UINT uElapse) OVERRIDE
Sets a timer for the window.
BOOL FireEvent(IEvtArgs *evt) OVERRIDE
Fires an event.
void OnDestroy()
Handles the destruction of the window.
void ReleaseRenderTarget(IRenderTarget *pRT)
Releases the RenderTarget obtained via GetRenderTarget.
BOOL IsVisible(BOOL bCheckParent=FALSE) SCONST OVERRIDE
Checks if the window is visible.
ISwndContainer * GetContainer() OVERRIDE
Retrieves the container associated with this window.
virtual CRect GetClientRect() const
Retrieves the client rectangle of the window.
SWND SetCapture() OVERRIDE
Sets the window to capture the mouse.
BOOL IsDisabled(BOOL bCheckParent=FALSE) SCONST OVERRIDE
Checks if the window is disabled.
BOOL KillTimer(char id) OVERRIDE
Kills a timer for the window.
void Invalidate() OVERRIDE
Invalidates the entire window.
BOOL ReleaseCapture() OVERRIDE
Releases the mouse capture from the window.
IRenderTarget * GetRenderTarget(LPCRECT pRc=NULL, GrtFlag gdcFlags=GRT_NODRAW, BOOL bClientRT=TRUE)
Retrieves a memory DC compatible with the SWND window.
Interface for rendering target objects.
Interface for Skin Objects.
SOUI Window Container Interface.