?? noticebox.cpp
字號:
#include "stdafx.h"
#define WRITESTRLENTH 50
#define BTN_POS_X 165
#define BTN_POS_Y 483
#define _IDX_UP_BTN_IMG 1
#define _IDX_ON_BTN_IMG 2
#define _IDX_DOWN_BTN_IMG 3
CNoticeBox::CNoticeBox()
{
m_bActive = FALSE;
m_bInited = FALSE;
m_bIsSelected = FALSE;
m_bSet = FALSE;
ZeroMemory(&m_rcWnd,sizeof(RECT));
}
BOOL CNoticeBox::Load(CWHWilImageData* pxBtnImage=NULL)
{
if(pxBtnImage!=NULL)
{
// Init Button;
m_bSet = TRUE;
m_pxBtnImage = pxBtnImage;
m_xMsgBtn.CreateGameBtn(pxBtnImage, _IDX_ON_BTN_IMG, _IDX_DOWN_BTN_IMG, BTN_POS_X,BTN_POS_Y);
}
else
{
m_bSet = FALSE;
}
return m_bSet;
}
BOOL CNoticeBox::DestoryMessageBox(VOID) // DestoryMessage box
{
m_bActive = FALSE;
m_bInited = FALSE;
m_bSet = FALSE;
m_xMsg.ClearAllNodes();
return FALSE;
}
BOOL CNoticeBox::HideMessageBox(VOID) // Hide Message box
{
m_bActive = FALSE;
return FALSE;
}
CNoticeBox::~CNoticeBox() // Destructor
{
}
BOOL CNoticeBox::SetBoxImage(INT nImageIndex)
{
POINT xSize,xPos;
if(m_bSet)
{
m_pxBtnImage->NewSetIndex(nImageIndex);
m_wpData = (WORD*)m_pxBtnImage->m_pbCurrImage;
m_shWidth = m_pxBtnImage->m_lpstNewCurrWilImageInfo->shWidth;
m_shHeight = m_pxBtnImage->m_lpstNewCurrWilImageInfo->shHeight;
xSize.x = g_xMainWnd.m_rcWindow.right - g_xMainWnd.m_rcWindow.left;
xSize.y = g_xMainWnd.m_rcWindow.bottom - g_xMainWnd.m_rcWindow.top;
xPos.x = (xSize.x - m_shWidth)/2;
xPos.y = (xSize.y - m_shHeight)/2;
SetRect(&m_rcWnd, xPos.x, xPos.y, xPos.x + m_shWidth, xPos.y + m_shHeight);
}
return m_bSet;
}
BOOL CNoticeBox::ShowMessageBox(CHAR* szMsg,INT nImgIndex) // Show Message box with Initialization
{
INT Lenth;
if(!m_bActive)
{
if(SetBoxImage(nImgIndex))
{
if(ShowMessage(szMsg))
{
m_xMsg.ClearAllNodes();
StringDivideLen(WRITESTRLENTH,Lenth, m_szMsg,&m_xMsg);
m_xMsgBtn.ChangeRect(m_rcWnd.left + BTN_POS_X, m_rcWnd.top + BTN_POS_Y);
}
else
{
m_bActive = FALSE;
}
}
else
{
m_bActive = FALSE;
m_bInited = FALSE;
}
}
return m_bActive;
}
// Message Process
HRESULT CNoticeBox::OnButtonDown(POINT tpMouse) // Button Down
{
HRESULT hResult=0;
if(m_xMsgBtn.OnLButtonDown(tpMouse))
{
g_xClientSocket.SendNoticeOK();
hResult = 1;
}
if(!hResult)
{
if(IsInRect(tpMouse.x,tpMouse.y,m_rcWnd))
{
m_bGrabbedMousePos.x = tpMouse.x - m_rcWnd.left;
m_bGrabbedMousePos.y = tpMouse.y - m_rcWnd.top;
m_bIsSelected = TRUE;
hResult = 0;
}
}
return hResult;
}
HRESULT CNoticeBox::OnButtonUp(POINT tpMouse) // Button Up
{
m_bIsSelected = FALSE;
HRESULT hResult=0;
if(m_xMsgBtn.OnLButtonUp(tpMouse))
hResult = 1; // Here
return hResult;
}
// Render Process
BOOL CNoticeBox::RenderMessageBox(INT nLoopTIme) // Render Function
{
INT nCount;
if(m_bActive&&m_bInited&&m_bSet)
{
g_xMainWnd.DrawWithImageForCompClipRgn( m_rcWnd.left, m_rcWnd.top, m_shWidth, m_shHeight, m_wpData, 800, 600 );
POINT xTxtPos;
nCount = m_xMsg.GetCounter();
m_xMsg.MoveCurrentToTop();
xTxtPos.x = m_rcWnd.left + 40;
xTxtPos.y = m_rcWnd.top + 20;
for(int i = 0 ; i < nCount ; i++)
{
g_xMainWnd.PutsHan(NULL,xTxtPos.x,xTxtPos.y,RGB(255,255,255),RGB(0,0,0),*m_xMsg.GetCurrentData());
xTxtPos.y = xTxtPos.y + 16; // Line Skip
m_xMsg.MoveNextNode();
}
// Draw Button
m_xMsgBtn.ShowGameBtn();
return FALSE;
}
return TRUE;
}
VOID CNoticeBox::MoveWnd(POINT ptMouse) // Move Window
{
if ( m_bActive && m_bIsSelected)
{
SetRect(&m_rcWnd, ptMouse.x-m_bGrabbedMousePos.x, ptMouse.y-m_bGrabbedMousePos.y,
ptMouse.x-m_bGrabbedMousePos.x+m_shWidth, ptMouse.y-m_bGrabbedMousePos.y+m_shHeight);
m_xMsgBtn.ChangeRect(m_rcWnd.left + BTN_POS_X, m_rcWnd.top + BTN_POS_Y);
}
else
{
m_xMsgBtn.OnMouseMove(ptMouse);
}
}
BOOL CNoticeBox::ShowMessage(CHAR* szMsg) // Show Message box with Initialization
{
if(SetMsg(szMsg))
m_bActive = TRUE;
else
m_bActive = FALSE;
return m_bActive;
}
BOOL CNoticeBox::SetMsg(CHAR* szMsg) // Init Messages
{
INT nLength;
nLength = strlen(szMsg);
if(nLength!=0)
{
ZeroMemory(m_szMsg,MAX_PATH);
strcpy(m_szMsg,szMsg);
m_bInited = TRUE;
}
else
m_bInited = FALSE;
return m_bInited;
}
BOOL CNoticeBox::StringDivideLen(INT nDivideLen, INT& nDividedLine, CHAR* szSrc,CDLList<CHAR*>* m_pxpStr)
{
CHAR* szTmpCheck;
CHAR szResult[MAX_PATH];
INT nStartLen = 0;
INT nEndLen = 0;
INT nResultLen = 0;
INT nWordCheck = 0;
nDividedLine = 1;
if ( szSrc[0] != NULL )
{
ZeroMemory(szResult,MAX_PATH);
for ( INT nCnt = 0; nCnt < (INT)strlen(szSrc); nCnt++)
{
nEndLen = nCnt+1;
// 泅犁何盒鱉瘤狼 鞏磊凱闌 佬綽促.
szTmpCheck = szSrc+nStartLen;
INT nsLen;
nsLen = strlen(szTmpCheck);
// 泅犁鱉瘤 佬絹柯 何盒撈 傾儈承撈甫 逞絹脊闌錠.
if (nsLen > nDivideLen )
{
// 泅犁 2官撈飄 鞏磊扼擱.
if ( szSrc[nEndLen-1] < 0 )
{
// 泅犁 菊俊鞏磊啊 2官撈飄 鞏磊啊 酒聰扼擱
if ( !(nWordCheck%2) )
{
nStartLen += strlen(szTmpCheck)-1;
nCnt--;
CHAR* pszNewLine;
pszNewLine = new CHAR[nResultLen+1];
memcpy(pszNewLine,szResult,nResultLen);
pszNewLine[nResultLen]=NULL;
m_pxpStr->AddNode(pszNewLine);
nResultLen = 0;
nDividedLine++;
}
else
{
nStartLen += strlen(szTmpCheck)-2;
nCnt -= 2;
CHAR* pszNewLine;
pszNewLine = new CHAR[nResultLen];
memcpy(pszNewLine,szResult,nResultLen-1);
pszNewLine[nResultLen-1]=NULL;
m_pxpStr->AddNode(pszNewLine);
nResultLen = 0;
nDividedLine++;
nWordCheck--;
}
}
// 1官撈飄 鞏磊.
// 泅犁焊促 茄官撈飄菊何盒鱉瘤父 絆妨秦林?jǐn)R 等促.
else
{
nStartLen += strlen(szTmpCheck)-1;
nCnt--;
CHAR* pszNewLine;
pszNewLine = new CHAR[nResultLen+1];
memcpy(pszNewLine,szResult,nResultLen);
pszNewLine[nResultLen]=NULL;
m_pxpStr->AddNode(pszNewLine);
nResultLen=0;
nDividedLine++;
}
}
else if(szSrc[nEndLen-1] == '\n' || szSrc[nEndLen-1] == 0x1B) // 礙力俺青 \n欄肺竅擱 Error ????
{
nStartLen += strlen(szTmpCheck)-1;
CHAR* pszNewLine;
pszNewLine = new CHAR[nResultLen+1];
memcpy(pszNewLine,szResult,nResultLen);
pszNewLine[nResultLen]=NULL;
m_pxpStr->AddNode(pszNewLine);
nResultLen=0;
nDividedLine++;
}
else
{
if ( szSrc[nEndLen-1] < 0 )
nWordCheck++;
szResult[nResultLen] = szSrc[nEndLen-1];
nResultLen++;
}
}
if(nResultLen!=0)
{
CHAR* pszNewLine;
pszNewLine = new CHAR[nResultLen+1];
memcpy(pszNewLine,szResult,nResultLen);
pszNewLine[nResultLen]=NULL;
m_pxpStr->AddNode(pszNewLine);
nDividedLine++;
nResultLen=0;
}
return TRUE;
}
return FALSE;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -