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

📄 gameobjectscrollbar.cpp

📁 游戏框架
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// ***************************************************************
//  GameObjectScrollBar   version:  1.0
//  -------------------------------------------------------------
//	File Name:	GameObjectScrollBar.cpp
//	Created:	2007/08/15
//	Modified:	2007/08/15   14:59
//	Author:		Randy
//  Msn:		Spark0803@hotmail.com
//  Email:		Spark0803@hotmail.com
//	Description:
//
//	Purpose:	
//  -------------------------------------------------------------
//  license:
//
//  The contents of this file are subject to the Mozilla Public
//  License Version 1.1 (the "License"); you may not use this file
//  except in compliance with the License. You may obtain a copy
//  of the License at  http://www.mozilla.org/MPL/ Software dis-
//  tributed under the License is distributed on an "AS IS" 
//  basis, WITHOUT WARRANTY OF ANY KIND, either express or im-
//  plied. See the License for the specific language governing
//  rights and limitations under the License.
//
//  The Initial Developer of the Original Code is William.Liang .
//  Copyright (C) 2007 - All Rights Reserved.
// ***************************************************************
#include "StdAfx.h"
#include ".\gameobjectscrollbar.h"

CGameObjectScrollBar::CGameObjectScrollBar(void)
{
	m_pResource		= NULL;
	m_pLuResource= NULL;
	m_pRDResource= NULL;
	m_pSResource= NULL;

	m_wCurrent		= 0;
	m_wMax			= 1;
	m_wMin			= 0;
	m_wStep			= 1;
	m_wScrollType	= Scrollbar_VScroll;
	m_bDropping		= false;

	m_BasalInfo.Disabled		= false;

	Add(GET_OBJECT_INTERFACE(m_obgLeftUp,IGameObject),"Scroll_LeftUp");

	Add(GET_OBJECT_INTERFACE(m_obgRightDown,IGameObject),"Scroll_RightDown");

	Add(GET_OBJECT_INTERFACE(m_obgScroll,IGameObject),"Scroll_Scroll");

	Add(GET_OBJECT_INTERFACE(m_GOGraph,IGameObject),"Scroll_BG");
}

CGameObjectScrollBar::~CGameObjectScrollBar(void)
{

}

//************************************
// <p>Description: 计算间隔</p>
// <p>Parameters:  </p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectScrollBar::CalcInterval(){
	_SIZE siBarSize = m_GOGraph.GetSize();
	m_wLength		= m_wMax - m_wMin - 1;
	if(m_wScrollType==Scrollbar_VScroll){
		m_siInterval.cy = 0;
		_SIZE siLeft = m_obgLeftUp.GetSize();
		_SIZE siRight= m_obgRightDown.GetSize();
		_SIZE siSor  = m_obgScroll.GetSize();
		siBarSize.cx-=siLeft.cx+siRight.cx+siSor.cx;
		m_siInterval.cx = siBarSize.cx/m_wLength;
	}
	else if(m_wScrollType==Scrollbar_HScroll){
		m_siInterval.cy = 0;
		_SIZE siLeft = m_obgLeftUp.GetSize();
		_SIZE siRight= m_obgRightDown.GetSize();
		_SIZE siSor  = m_obgScroll.GetSize();
		siBarSize.cy-=siLeft.cy+siRight.cy+siSor.cy;
		m_siInterval.cy = siBarSize.cy/m_wLength;
	}
}
//************************************
// <p>Description: 调整当前值</p>
// <p>Parameters:  </p>
// <p>    bool bFlag</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObjectScrollBar::Increase(_POINT pPoint){
	WORD m_wCurrent;
	_POINT pSTLPoint=m_GOGraph.ScreenToLocal(pPoint);
	if(m_wScrollType==Scrollbar_VScroll){

		_SIZE siSor = m_obgScroll.GetSize();
		pSTLPoint.x-=siSor.cx;
		if(pSTLPoint.x<=0)
		{
			m_wCurrent=0;
			SetCurrent(m_wCurrent);
			return true;
		}
		m_wCurrent=static_cast<WORD>(pSTLPoint.x/m_siInterval.cx);
		if(m_wCurrent>m_wLength)
			m_wCurrent=m_wLength;
	}else if(m_wScrollType==Scrollbar_HScroll){
		_SIZE siSor = m_obgScroll.GetSize();
		pSTLPoint.y-=siSor.cy;
		if(pSTLPoint.y<=0)
		{
			m_wCurrent=0;
			SetCurrent(m_wCurrent);
			return true;
		}
		m_wCurrent=static_cast<WORD>(pSTLPoint.y/m_siInterval.cy);
		if(m_wCurrent>m_wLength)
			m_wCurrent=m_wLength;
	}
	SetCurrent(m_wCurrent);
	return true;
}

//************************************
// <p>Description: Create 创建</p>
// <p>Parameters:  </p>
// <p>    LPCTSTR lpName</p>
// <p>    _RECT rcSize</p>
// <p>    CResource * pResource</p>
// <p>    _RECT rcLUSize</p>
// <p>    _RECT rcRDSize</p>
// <p>    _RECT rcSSize</p>
// <p>    WORD wScrollType</p>
// <p>    WORD wMax</p>
// <p>    WORD wMin</p>
// <p>    WORD wStep</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObjectScrollBar::Create(LPCTSTR lpName, _SIZE siSize, CResource* pResource, _RECT rcLURes,_RECT rcRDRes,_RECT rcSRes, WORD wScrollType,WORD wMax, WORD wMin, WORD wStep){

	__super::Create(lpName,siSize,Type_Scroll);

	m_pResource = pResource;
	m_wMax		= wMax;
	m_wMin		= wMin;
	m_wStep		= wStep;
	m_siSize		= siSize;

	m_obgLeftUp.Create("Scroll_LeftUp",rcLURes,pResource);

	m_obgRightDown.Create("Scroll_RightDown",rcRDRes,pResource);	

	m_obgScroll.Create("Scroll_Scroll",rcSRes,pResource);

	m_GOGraph.Create("Scroll_BG",siSize,g_lpDefaultResource);


	SetScrollBarType(wScrollType);
	return true;
}

//************************************
// <p>Description: 对象创建</p>
// <p>Parameters:  </p>
// <p>    LPCTSTR lpName</p>
// <p>    _SIZE siSize</p>
// <p>    CResource * pLUResource</p>
// <p>    _SIZE siLURes</p>
// <p>    CResource * pRDResource</p>
// <p>    _SIZE siRDRes</p>
// <p>    CResource * pSResource</p>
// <p>    _SIZE siSRes</p>
// <p>    WORD wScrollType</p>
// <p>    WORD wMax</p>
// <p>    WORD wMin</p>
// <p>    WORD wStep</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObjectScrollBar::Create(LPCTSTR lpName, _SIZE siSize, CResource* pLUResource, _SIZE siLURes,CResource* pRDResource,_SIZE siRDRes,CResource* pSResource,_SIZE siSRes, WORD wScrollType,WORD wMax, WORD wMin, WORD wStep){
	__super::Create(lpName,siSize,Type_Scroll);

	m_pLuResource = pLUResource;
	m_pRDResource = pRDResource;
	m_pSResource  = pSResource;
	m_wMax		= wMax;
	m_wMin		= wMin;
	m_wStep		= wStep;
	m_siSize		= siSize;

	m_obgLeftUp.Create("Scroll_LeftUp",siLURes,m_pLuResource);

	m_obgRightDown.Create("Scroll_RightDown",siRDRes,m_pRDResource);	

	m_obgScroll.Create("Scroll_Scroll",siSRes,m_pSResource);

	m_GOGraph.Create("Scroll_BG",siSize,g_lpDefaultResource);

	SetScrollBarType(wScrollType);

	return true;
}


//************************************
// <p>Description: 重获焦点</p>
// <p>Parameters:  </p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectScrollBar::FocusGain(){
	m_GOGraph.FocusGain();
}

//************************************
// <p>Description: 渲染对象</p>
// <p>Parameters:  </p>
// <p>    WPARAM wParam</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectScrollBar::Render(WPARAM wParam){
	m_obgLeftUp.Render(wParam);	
	m_obgRightDown.Render(wParam);	
	m_obgScroll.Render(wParam);	
	m_GOGraph.Render(wParam);	
}
//************************************
// <p>Description: 返回当前值</p>
// <p>Parameters:  </p>
//
// <p>Returns:   WORD</p>
//************************************
WORD CGameObjectScrollBar::GetCurrent(){
	return m_wCurrent;
}


//************************************
// <p>Description: 返回最大值</p>
// <p>Parameters:  </p>
//
// <p>Returns:   WORD</p>
//************************************
WORD CGameObjectScrollBar::GetMax(){
	return m_wMax;
}

//************************************
// <p>Description: 返回最小值</p>
// <p>Parameters:  </p>
//
// <p>Returns:   WORD</p>
//************************************
WORD CGameObjectScrollBar::GetMin(){
	return m_wMin;
}

//************************************
// <p>Description: 返回滑动类型</p>
// <p>Parameters:  </p>
//
// <p>Returns:   WORD</p>
//************************************
WORD CGameObjectScrollBar::GetSliderType(){
	return m_wScrollType;
}

//************************************
// <p>Description: 返回步长值</p>
// <p>Parameters:  </p>
//
// <p>Returns:   WORD</p>
//************************************
WORD CGameObjectScrollBar::GetStep(){
	return m_wStep;
}


//************************************
// <p>Description: 设置当前值</p>
// <p>Parameters:  </p>
// <p>    WORD wCurrent</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectScrollBar::SetCurrent(WORD wCurrent){
	m_wCurrent = wCurrent;

	//计算位置的位标
	_POINT piBlockPos = m_obgScroll.GetLocalPosition();

	_SIZE  siRightDown = m_obgRightDown.GetSize();

	_SIZE  siLeft	   = m_obgLeftUp.GetSize();

	if(m_wScrollType==Scrollbar_VScroll){
		if(m_wCurrent)
			piBlockPos.x = (m_siInterval.cx*wCurrent)+siLeft.cx;
		else
			piBlockPos.x = (piBlockPos.x-piBlockPos.x)+siLeft.cx;
	}
	else{

⌨️ 快捷键说明

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