⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scrollbar.h

📁 3D游戏展示程序
💻 H
字号:
//--------------------------------------------------
//  Desc: ScrollBar
//  Date: 2006.11.27 /update
//  Author: artsylee
//
//  Copyright (C) 2006 artsylee
//
//--------------------------------------------------

#ifndef _SCROLLBAR_
#define _SCROLLBAR_

#include "Window.h"
#include "Slider.h"
#include "Button.h"

#define SCROLLBAR_MINTHUMBSIZE		8
#define SCROLLBAR_ARROWCLICK_DELAY  330
#define SCROLLBAR_ARROWCLICK_REPEAT 50

// ScrollBar不使用RGN
// 重复加载的问题

class ASE_DLL GScrollBar : public CWindow
{
public:
	GScrollBar(CWindow* pParent = NULL);
	virtual ~GScrollBar();

	virtual bool	LoadFromIni(char* pfilename, char* pIndex);
	virtual DWORD	ProcessEvent();
	virtual void	Render();

	virtual	void	OffSet(int x, int y);
	virtual void	Enable();
	virtual void	Disable();
	virtual void	Show(bool c = true);

	void		SetTrackRange(int nStart, int nEnd);
	int			GetTrackPos()		{ return m_nPosition; }
	void		SetTrackPos(int nPosition); 
	int			GetPageSize()		{ return m_nPageSize; }
	void		SetPageSize(int nPageSize);
	void		Scroll(int nDelta);
	void		ShowItem(int nIndex); 

	void		SetSize(int width, int height);
	int			GetMinWidth()		{	return m_rcMin[BTN_NORMAL].Width();	}
	int			GetMinHeight()		{	return m_rcMin[BTN_NORMAL].Height();}		

protected:
	void		AdjustPosition();
	virtual void	UpdateRect();
	virtual void	UpdateBtnRect();

protected:
	enum ARROWSTATE
	{ 
		CLEAR, 
		CLICKED_MIN, 
		CLICKED_MAX, 
		HELD_MIN, 
		HELD_MAX,
	};
	SLIDER_TYPE	m_SliderType;
	bool		m_bShowSlider;
	// value
	int			m_nPosition;
	int			m_nPageSize;
	int			m_nStart;
	int			m_nEnd;
	// min button
	GRect		m_rcMin[BTN_STATENUM];
	BTN_STATE	m_MinState;
	GPoint		m_ptMin;
	DWORD		m_hBtnMin;
	// max button
	GRect		m_rcMax[BTN_STATENUM];
	BTN_STATE	m_MaxState;
	GPoint		m_ptMax;
	DWORD		m_hBtnMax;
	// slider button
	bool		m_bPressed;
	GRect		m_rcButton;
	GRect		m_DstButton;
	DWORD		m_hBtnSlider;
	// Delay & Repeat
	POINT		m_LastMouse;
	ARROWSTATE	m_Arrow; 
	DWORD		m_dArrowTS;
	// Other
	int			m_ButtonOffset;
};

class ASE_DLL CoolScroll : public GScrollBar
{
public:
	CoolScroll(CWindow* pParent = NULL);

	virtual bool	LoadFromIni(char* pfilename, char* pIndex);
	virtual DWORD	ProcessEvent();
	virtual void	Render();
private:
	virtual void	UpdateRect();
	virtual void	UpdateBtnRect();
};

#endif // _SCROLLBAR_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -