Button.cpp
上传用户:cydong117
上传日期:2009-11-10
资源大小:638k
文件大小:8k
- // 弥措 滚瓢狼 荐
- #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;
- }