diff options
Diffstat (limited to 'Src/Plugins/General/gen_ml/skinnedscrollwnd.h')
-rw-r--r-- | Src/Plugins/General/gen_ml/skinnedscrollwnd.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/Src/Plugins/General/gen_ml/skinnedscrollwnd.h b/Src/Plugins/General/gen_ml/skinnedscrollwnd.h new file mode 100644 index 00000000..c5f1644d --- /dev/null +++ b/Src/Plugins/General/gen_ml/skinnedscrollwnd.h @@ -0,0 +1,99 @@ +#ifndef NULLOSFT_MEDIALIBRARY_SKINNED_SCROLLWINDOW_HEADER +#define NULLOSFT_MEDIALIBRARY_SKINNED_SCROLLWINDOW_HEADER + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +#include "./skinnedwnd.h" + +typedef struct _SCROLLBAR SCROLLBAR; + +// scroll modes +#define SCROLLMODE_STANDARD_I 0x00 +#define SCROLLMODE_LISTVIEW_I 0x01 +#define SCROLLMODE_TREEVIEW_I 0x02 +#define SCROLLMODE_COMBOLBOX_I 0x03 + +class SkinnedScrollWnd : public SkinnedWnd +{ +public: + typedef enum InvalidateFlags + { + InvalidateFlag_Normal = 0, + InvalidateFlag_RedrawNow = (1 << 0), + InvalidateFlag_Frame = (1 << 1), + InvalidateFlag_VertBarAppeared = (1 << 2), + InvalidateFlag_VertBarRemoved = (1 << 3), + InvalidateFlag_HorzBarAppeared = (1 << 4), + InvalidateFlag_HorzBarRemoved = (1 << 5), + } InvalidateFlags; + +protected: + SkinnedScrollWnd(BOOL bIsDialog); + virtual ~SkinnedScrollWnd(void); + +public: + void UpdateScrollBars(BOOL fInvalidate); + void ShowHorzScroll(BOOL fEnable); + void ShowVertScroll(BOOL fEnable); + BOOL IsHorzBarHidden(); + BOOL IsVertBarHidden(); + BOOL SetMode(UINT nMode); + UINT GetMode(); + void DisableNoScroll(BOOL bDisable); + BOOL IsNoScrollDisabled(); + +protected: + virtual BOOL Attach(HWND hwndHeader); + virtual LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam); + + virtual INT OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS *pncsp); + virtual INT OnNcHitTest(POINTS pts); + virtual void OnNcPaint(HRGN rgnUpdate); + virtual void OnNcMouseMove(UINT nHitTest, POINTS pts); + virtual void OnNcLButtonDown(UINT nHitTest, POINTS pts); + virtual void OnNcMouseLeave(); + virtual void OnStyleChanged(INT styleType, STYLESTRUCT *pss); + virtual void OnLButtonUp(UINT nFlags, POINTS pts); + virtual void OnMouseMove(UINT nFlags, POINTS pts); + virtual void OnTimer(UINT_PTR idEvent, TIMERPROC fnTimer); + virtual LRESULT OnEraseBackground(HDC hdc); + virtual void OnPrint(HDC hdc, UINT options); + virtual void OnSkinChanged(BOOL bNotifyChildren, BOOL bRedraw); + + + virtual BOOL OnMediaLibraryIPC(INT msg, INT_PTR param, LRESULT *pResult); + + BOOL ShowScrollBar(int wBar, BOOL fShow); + void UpdateScrollBar(SCROLLBAR *psb, InvalidateFlags *invalidateFlags); + void InvalidateNC(InvalidateFlags invalidate, UINT bars); + void PaintNonClient(HDC hdc); + INT AdjustHover(UINT nHitTest, POINTS pts); + void UpdateFrame(); + + + LRESULT OnListViewScroll(INT dx, INT dy); + void OnVertScroll(UINT code, UINT pos, HWND hwndSB); + void OnMouseWheel(INT delta, UINT vtKey, POINTS pts); + + void Emulate_LeftButtonUp(UINT nFlags, POINTS pts, BOOL forwardMessage); + +private: + friend BOOL SkinWindowEx(HWND hwndToSkin, INT type, UINT style); + friend static BOOL GetHScrollRect(SkinnedScrollWnd *pWnd, RECT *prc); + friend static BOOL GetVScrollRect(SkinnedScrollWnd *pWnd, RECT *prc); + + +private: + + SCROLLBAR *psbHorz; + SCROLLBAR *psbVert; + UINT scrollFlags; + UINT scrollPortionHover; + int wheelCarryover; +}; + +DEFINE_ENUM_FLAG_OPERATORS(SkinnedScrollWnd::InvalidateFlags); + +#endif //NULLOSFT_MEDIALIBRARY_SKINNED_SCROLLWINDOW_HEADER |