📄 button.cpp
字号:
// 弥措 滚瓢狼 荐
#include "stdafx.h"
#define MAX_TXT_BUTTON_COUNT 5
/////////////////////////////////////////////////////////////////////////
// CTextButton : 积己磊
/////////////////////////////////////////////////////////////////////////
CTextButton::CTextButton()
{
m_pTxtBtn.ClearAllNodes();
m_nTxtHeight = 0;
m_nMaxLine = 0;
m_bIsReady = FALSE;
m_IsUseSubTxt = FALSE;
}
/////////////////////////////////////////////////////////////////////////
// ~CTextButton : 家戈磊
/////////////////////////////////////////////////////////////////////////
CTextButton::~CTextButton()
{
ReleaseButtons();
}
/////////////////////////////////////////////////////////////////////////
// AddButton : Text 滚瓢阑 眠啊茄促.
/////////////////////////////////////////////////////////////////////////
// pszTxt: 拳搁俊 钎矫瞪 Text
// xRect: 滚瓢栏肺 牢侥瞪 Rect 康开
// nLinePos: 嘛鳃镑狼 Line Count
// pszParam: 努腐 登菌阑锭 静老 Parameter蔼
/////////////////////////////////////////////////////////////////////////
BOOL CTextButton::AddButton(CHAR *pszTxt,RECT xRect,INT nLinePos,CHAR *pszParam,COLORREF nColor,COLORREF cColor)
{
if(m_bIsReady)
{
SIZE tSize;
CMTxtBtn* tCMTxtBtn;
tCMTxtBtn = new CMTxtBtn;
tSize = g_xMainWnd.GetStrLength(NULL,NULL,pszTxt);
m_nTxtHeight = tSize.cy;
strcpy(tCMTxtBtn->Txt,pszTxt);
tCMTxtBtn->xRect = xRect;
tCMTxtBtn->nLinePos = nLinePos;
strcpy(tCMTxtBtn->Param,pszParam);
tCMTxtBtn->bIsClicked = FALSE;
tCMTxtBtn->nColor = nColor;
tCMTxtBtn->cColor = cColor;
m_pTxtBtn.AddNode(tCMTxtBtn);
return TRUE;
}
else
return FALSE;
}
BOOL CTextButton::AddButton(CHAR *pszTxt,CHAR *pszTxt2,RECT xRect,INT nLinePos,CHAR *pszParam,COLORREF nColor,COLORREF cColor)
{
if(m_bIsReady)
{
SIZE tSize;
CMTxtBtn* tCMTxtBtn;
tCMTxtBtn = new CMTxtBtn;
tSize = g_xMainWnd.GetStrLength(NULL,NULL,pszTxt);
m_nTxtHeight = tSize.cy;
strcpy(tCMTxtBtn->Txt,pszTxt);
strcpy(tCMTxtBtn->sTxt,pszTxt2);
tCMTxtBtn->xRect = xRect;
tCMTxtBtn->nLinePos = nLinePos;
strcpy(tCMTxtBtn->Param,pszParam);
tCMTxtBtn->bIsClicked = FALSE;
tCMTxtBtn->nColor = nColor;
tCMTxtBtn->cColor = cColor;
m_pTxtBtn.AddNode(tCMTxtBtn);
m_IsUseSubTxt = TRUE;
return TRUE;
}
else
return FALSE;
}
/////////////////////////////////////////////////////////////////////////
// ClickCheck : Button Click 俊 狼茄 Click Checking 阑 茄促.
/////////////////////////////////////////////////////////////////////////
// xPos: 角力 付快胶 谅钎甫 罐酒 棵巴
// xWndPos: 角力 Text啊 静捞扁 矫累 窍绰 镑狼 谅钎甫 罐绢 棵巴
// CurrentTopLine: 泅力 Window 惑俊 嘛洒绰 啊厘 拉临
/////////////////////////////////////////////////////////////////////////
CMTxtBtn* CTextButton::ClickCheck(POINT xWndPos,POINT xPos,INT CurrentTopLine)
{
if(m_bIsReady)
{
m_pTxtBtn.MoveCurrentToTop();
for(int i = 0; i<m_pTxtBtn.ListLength();i++)
{
if((m_pTxtBtn.GetCurrentData()->nLinePos >= CurrentTopLine) && (m_pTxtBtn.GetCurrentData()->nLinePos <= CurrentTopLine+m_nMaxLine))
{
if(IsCurrsorOnThisButton(m_pTxtBtn.GetCurrentData(),xWndPos,xPos,CurrentTopLine))
{
m_pTxtBtn.GetCurrentData()->bIsClicked = !m_pTxtBtn.GetCurrentData()->bIsClicked;
return m_pTxtBtn.GetCurrentData();
}
}
m_pTxtBtn.MoveNextNode();
}
}
return NULL;
}
/////////////////////////////////////////////////////////////////////////
// ReleaseButtons : 捞固 棱囚 乐绰 葛电 滚瓢甸阑 朝赴促.
/////////////////////////////////////////////////////////////////////////
BOOL CTextButton::ReleaseButtons(VOID)
{
if(m_bIsReady)
{
m_pTxtBtn.ClearAllNodes();
// m_bIsReady = FALSE;
m_nTxtHeight = 0;
return TRUE;
}
else
return FALSE;
}
/////////////////////////////////////////////////////////////////////////
// InitTxtBtn : 夯 努贰胶甫 荤侩 且荐 乐档废 霖厚 茄促.
/////////////////////////////////////////////////////////////////////////
// nTextHeight: 角力 Text狼 Height
// WndRect: 扩档快狼 农扁
// nMaxLine: 嘛阑荐 乐绰 弥措 扼牢荐
/////////////////////////////////////////////////////////////////////////
BOOL CTextButton::InitTxtBtn(INT nMaxLine,POINT StartPos,INT nLineGap)
{
m_bIsReady = TRUE;
m_nMaxLine = nMaxLine;
m_xStartPos = StartPos;
m_nLineGap = nLineGap;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////
// GetButton : 秦寸 Button狼 器牢磐甫 掘绰促.
/////////////////////////////////////////////////////////////////////////
// nIndex : Index
/////////////////////////////////////////////////////////////////////////
CMTxtBtn* CTextButton::GetButton(INT nIndex)
{
if(nIndex<0 || nIndex>m_pTxtBtn.GetCounter()) return NULL;
m_pTxtBtn.MoveCurrentToTop();
m_pTxtBtn.MoveNode(nIndex);
return m_pTxtBtn.GetCurrentData();
}
/////////////////////////////////////////////////////////////////////////
// GetButtonCount : Button狼 荐甫 掘绰促.
/////////////////////////////////////////////////////////////////////////
INT CTextButton::GetButtonCount(VOID)
{
return m_pTxtBtn.GetCounter();
}
VOID CTextButton::ClickFreeAllBtn(VOID)
{
m_pTxtBtn.MoveCurrentToTop();
for(int i = 0 ; i < m_pTxtBtn.GetCounter() ; i++)
{
m_pTxtBtn.GetCurrentData()->bIsClicked = FALSE;
m_pTxtBtn.MoveNextNode();
}
}
/////////////////////////////////////////////////////////////////////////
// ClickCheck : Button Click 俊 狼茄 Click Checking 阑 茄促.
/////////////////////////////////////////////////////////////////////////
// xPos: 角力 付快胶 谅钎甫 罐酒 棵巴
// xWndPos: 角力 Text啊 静捞扁 矫累 窍绰 镑狼 谅钎甫 罐绢 棵巴
// CurrentTopLine: 泅力 Window 惑俊 嘛洒绰 啊厘 拉临
/////////////////////////////////////////////////////////////////////////
CMTxtBtn* CTextButton::ButtonDownCheck(POINT xWndPos,POINT xPos,INT CurrentTopLine)
{
/// CMTxtBtn* xResult=NULL;
/* int nTempX,nTempY;
int StdPosX,StdPosY; // 框流捞绰 扩档快郴俊辑 扁霖 痢阑 拌魂 茄促.*/
if(m_bIsReady)
{
m_pTxtBtn.MoveCurrentToTop();
for(int i = 0; i<m_pTxtBtn.ListLength();i++)
{
if((m_pTxtBtn.GetCurrentData()->nLinePos >= CurrentTopLine) && (m_pTxtBtn.GetCurrentData()->nLinePos <= CurrentTopLine+m_nMaxLine))
{
if(IsCurrsorOnThisButton(m_pTxtBtn.GetCurrentData(),xWndPos,xPos,CurrentTopLine))
{
m_pTxtBtn.GetCurrentData()->bIsClicked = TRUE;
return m_pTxtBtn.GetCurrentData();
}
m_pTxtBtn.GetCurrentData()->bIsClicked = FALSE;
}
m_pTxtBtn.MoveNextNode();
}
}
return NULL;
}
CMTxtBtn* CTextButton::ButtonUpCheck(POINT xWndPos,POINT xPos,INT CurrentTopLine)
{
if(m_bIsReady)
{
m_pTxtBtn.MoveCurrentToTop();
for(int i = 0; i<m_pTxtBtn.ListLength();i++)
{
if((m_pTxtBtn.GetCurrentData()->nLinePos >= CurrentTopLine) && (m_pTxtBtn.GetCurrentData()->nLinePos <= CurrentTopLine+m_nMaxLine))
{
if(IsCurrsorOnThisButton(m_pTxtBtn.GetCurrentData(),xWndPos,xPos,CurrentTopLine))
{
m_pTxtBtn.GetCurrentData()->bIsClicked = FALSE;
return m_pTxtBtn.GetCurrentData();
}
}
m_pTxtBtn.MoveNextNode();
}
}
return NULL;
}
BOOL CTextButton::IsCurrsorOnThisButton(CMTxtBtn* pBtn,POINT xWndPos,POINT xPos,INT CurrentTopLine)
{
int nTempX,nTempY;
int StdPosX,StdPosY; // 框流捞绰 扩档快郴俊辑 扁霖 痢阑 拌魂 茄促.
StdPosY = xWndPos.y + (pBtn->nLinePos - CurrentTopLine)*(m_nTxtHeight+m_nLineGap)+m_xStartPos.y; // 啊函 困摹俊辑狼 Top阑 备茄促.
StdPosX = xWndPos.x + pBtn->xRect.left+m_xStartPos.x; // 啊函 困摹俊辑狼 Left甫 备茄促.
nTempX = StdPosX + pBtn->xRect.right;
nTempY = StdPosY + pBtn->xRect.bottom;
if((xPos.x>StdPosX)&&(xPos.x<nTempX))
{
if((xPos.y>StdPosY)&&(xPos.y<nTempY))
{
return TRUE;
}
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -