📄 gameobjectscrollbar.cpp
字号:
// ***************************************************************
// 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 + -