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