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

📄 gameobjectscrollbar.cpp

📁 游戏框架
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		if(m_wCurrent)
			piBlockPos.y = (m_siInterval.cy*wCurrent)+siLeft.cy;
		else
			piBlockPos.y = (piBlockPos.y-piBlockPos.y)+siLeft.cy;
	}

	//PostMessage(g_
	m_obgScroll.MoveTo(piBlockPos);
}

//************************************
// <p>Description: 设置最大值</p>
// <p>Parameters:  </p>
// <p>    WORD wMax</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectScrollBar::SetMax(WORD wMax){
	m_wMax=wMax;
	CalcInterval();
}

//************************************
// <p>Description: 设置最小值</p>
// <p>Parameters:  </p>
// <p>    WORD wMin</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectScrollBar::SetMin(WORD wMin){
	m_wMin=wMin;
	CalcInterval();
}

//************************************
// <p>Description: 设置滑动类型</p>
// <p>Parameters:  </p>
// <p>    WORD wType</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectScrollBar::SetScrollBarType(WORD wType){
	m_wScrollType=wType;
	
	if(m_wScrollType==Scrollbar_VScroll){

		m_GOGraph.AdjustPoints(m_siSize);

		BASALINFO m_BasalInfo=this->GetBasalInfo();

		BASALINFO m_GraphBasal=m_GOGraph.GetBasalInfo();

		_SIZE m_GraphSize = m_GOGraph.GetSize();

		_SIZE m_SizeScroll = m_obgScroll.GetSize();
		
		m_GOGraph.MoveTo(m_BasalInfo.ScreenPos);

		m_GraphSize.cy=m_SizeScroll.cy;

		m_GOGraph.AdjustPoints(m_GraphSize);

		this->SetSize(m_GraphSize);

		m_obgLeftUp.MoveTo(m_GraphBasal.ScreenPos);

		m_obgRightDown.MoveTo(_POINT(m_GraphBasal.ScreenPos.x+m_siSize.cx-m_SizeScroll.cx,m_GraphBasal.ScreenPos.y));	

		_SIZE m_obgButtonSize=m_obgLeftUp.GetSize();

		m_obgScroll.MoveTo(_POINT(m_GraphBasal.ScreenPos.x+m_obgButtonSize.cx,m_GraphBasal.ScreenPos.y));

	}else if(m_wScrollType==Scrollbar_HScroll){

		m_GOGraph.AdjustPoints(m_siSize);

		BASALINFO m_BasalInfo=this->GetBasalInfo();

		BASALINFO m_GraphBasal=m_GOGraph.GetBasalInfo();

		_SIZE m_GraphSize = m_GOGraph.GetSize();

		_SIZE m_SizeScroll = m_obgScroll.GetSize();

		m_GOGraph.MoveTo(m_BasalInfo.ScreenPos);

		m_GraphSize.cx=m_SizeScroll.cx;

		m_GOGraph.AdjustPoints(m_GraphSize);

		this->SetSize(m_GraphSize);

		m_obgLeftUp.MoveTo(m_GraphBasal.ScreenPos);

		m_obgRightDown.MoveTo(_POINT(m_GraphBasal.ScreenPos.x,m_GraphBasal.ScreenPos.y+m_siSize.cy-m_SizeScroll.cy));	

		_SIZE m_obgButtonSize=m_obgLeftUp.GetSize();

		m_obgScroll.MoveTo(_POINT(m_GraphBasal.ScreenPos.y,m_GraphBasal.ScreenPos.y+m_obgButtonSize.cy));
	}


	CalcInterval();
}


//************************************
// <p>Description: 设置步长值</p>
// <p>Parameters:  </p>
// <p>    WORD wStep</p>
//
// <p>Returns:   void</p>
//************************************p
void CGameObjectScrollBar::SetStep(WORD wStep){
	m_wStep=wStep;
}

//************************************
// <p>Description: 设置ScrollBar的区</p>
// <p>Parameters:  </p>
// <p>    _SIZE siSize</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectScrollBar::SetScrollBarRect(_SIZE siSize){
	__super::SetSize(siSize);
	m_siSize=siSize;
	m_GOGraph.AdjustPoints(siSize);
	SetScrollBarType(m_wScrollType);
}

CGameObjectScrollBar& CGameObjectScrollBar::operator=(CGameObjectScrollBar& GameObject){
	CGameObject*	pOtherBaseClass = static_cast<CGameObject *>(&GameObject);
	CGameObject*	pMySelfBaseClass = static_cast<CGameObject *>(this);

	*pMySelfBaseClass = *pOtherBaseClass;


	m_siInterval	  = GameObject.m_siInterval;				//间距

	m_pResource		  = GameObject.m_pResource;					//图片资源

	m_pResource		  = GameObject.m_pResource;					//图片资源
	m_pLuResource	  = GameObject.m_pLuResource;				//分离图片资源左上
	m_pRDResource	  = GameObject.m_pRDResource;				//分离图片资源右下
	m_pSResource	  = GameObject.m_pSResource;				//分离图片资源拖动 

	m_siSize			  = GameObject.m_siSize;						//长度
	m_wCurrent		  = GameObject.m_wCurrent;					//当前值
	m_wMax			  = GameObject.m_wMax;						//最大值
	m_wMin			  = GameObject.m_wMin;						//最小值
	m_wScrollType	  = GameObject.m_wScrollType;	 			//滑动类型
	m_wStep			  = GameObject.m_wStep;						//步长值
	m_obgLeftUp		  = GameObject.m_obgLeftUp;					//左上按钮
	m_obgRightDown	  = GameObject.m_obgRightDown;				//右下按钮
	m_obgScroll		  = GameObject.m_obgScroll;					//滑动按钮
	m_GOGraph		  = GameObject.m_GOGraph;					//内置底纹对象
	m_bDropping		  = GameObject.m_bDropping;					//是否拖动中


	return *this;
}

//************************************
// <p>Description: QueryInterface</p>
// <p>Parameters:  </p>
// <p>    const IID & Guid</p>
// <p>    DWORD dwQueryVer</p>
//
// <p>Returns:   void*</p>
//************************************
void* CGameObjectScrollBar::QueryInterface(const IID &Guid, DWORD dwQueryVer){
	QUERYINTERFACE(IGameObjectScrollBar,Guid,dwQueryVer);
	QUERYINTERFACE(IGameObject,Guid,dwQueryVer);
	QUERYINTERFACE(IBaseObject,Guid,dwQueryVer);
	QUERYINTERFACE_IUNKNOWNEX(IGameObjectScrollBar,Guid,dwQueryVer);
	return NULL;
}


//************************************
// <p>Description: 鼠标移动</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nType</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObjectScrollBar::OnMouseMove(float x, float y, UINT nComboKey){
	if(m_bDropping){
		Increase(_POINT(x,y));
		return true;
	}
	if(m_obgLeftUp.Hitting(x,y)){
		m_obgRightDown.OnMouseOut(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
		m_obgScroll.OnMouseOut(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
		m_obgLeftUp.OnMouseIn(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
		return true;
	}else
	{
		m_obgLeftUp.OnMouseOut(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
	}
	if(m_obgRightDown.Hitting(x,y)){
		m_obgLeftUp.OnMouseOut(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
		m_obgScroll.OnMouseOut(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
		m_obgRightDown.OnMouseIn(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
		return true;
	}else{
		m_obgRightDown.OnMouseOut(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
	}
	if(m_obgScroll.Hitting(x,y)){
		m_obgLeftUp.OnMouseOut(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
		m_obgRightDown.OnMouseOut(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
		m_obgScroll.OnMouseIn(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
		return true;
	}else{
		m_obgScroll.OnMouseOut(x,y,INPUT_MOUSE_DOWN,WM_MOUSEMOVE,nComboKey);
	}
	return true;
}

//************************************
// <p>Description: 鼠标点击</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nType</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObjectScrollBar::OnMouseClick(float x, float y, int nType, UINT nMessage, UINT nComboKey){

	if(nType==INPUT_MOUSE_DOWN){
		if(m_obgLeftUp.Hitting(x,y)){
			m_obgLeftUp.OnMouseClick(x,y,nType,nMessage, nComboKey);
			if(m_wCurrent>0)
				SetCurrent(--m_wCurrent);
			return true;
		}
		if(m_obgRightDown.Hitting(x,y)){
			m_obgRightDown.OnMouseClick(x,y,nType,nMessage, nComboKey);
			if(m_wCurrent<m_wLength)
				SetCurrent(++m_wCurrent);
			return true;
		}
		if(m_obgScroll.Hitting(x,y)){
			m_bDropping = true;
			m_obgScroll.OnMouseClick(x,y,nType,nMessage, nComboKey);
		}
		Increase(_POINT(x,y));
	}
	else{
		if(nType==INPUT_MOUSE_UP && m_bDropping)
			m_bDropping = false;
	}

	return true;
}

//************************************
// <p>Description: 鼠标移出</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nType</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObjectScrollBar::OnMouseOut(float x, float y, int nType, UINT nMessage, UINT nComboKey){
	if(m_bDropping)
		m_bDropping=false;
	m_obgLeftUp.OnMouseOut(x,y,nType,nMessage, nComboKey);
	m_obgRightDown.OnMouseOut(x,y,nType,nMessage, nComboKey);
	m_obgScroll.OnMouseOut(x,y,nType,nMessage, nComboKey);
	return true;
}

//************************************
// <p>Description: 键盘事件</p>
// <p>Parameters:  </p>
// <p>    TCHAR nKey</p>
// <p>    UINT nFlag</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObjectScrollBar::OnKeyDown(TCHAR nKey, UINT nFlag){
	//只处理KEYDOWN事件
	switch(nKey){
		case VK_LEFT:		//左
		case VK_UP:			//上
				if(m_wCurrent>0)
					SetCurrent(--m_wCurrent);
			break;
		case VK_RIGHT:		//右
		case VK_DOWN:		//下
				if(m_wCurrent<m_wLength)
					SetCurrent(++m_wCurrent);
			break;
	}
	return true;
}

⌨️ 快捷键说明

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