📄 chatpopwnd.cpp
字号:
/******************************************************************************************************************
葛碘疙:
累己磊:
累己老:
[老磊][荐沥磊] : 荐沥 郴侩
*******************************************************************************************************************/
#include "StdAfx.h"
CChatPopWnd::CChatPopWnd()
{
Init();
}
CChatPopWnd::~CChatPopWnd()
{
Destroy();
}
VOID CChatPopWnd::Init()
{
CGameWnd::Init();
m_nCanScrlCnt = 0;
m_nCurrStartChatLine = 0;
SetRect(&m_rcChatPopFrame, 0, 0, 0, 0);
SetRect(&m_rcEditBoxFrame, 0, 0, 0, 0);
m_xChatPopBtn.Init();
}
VOID CChatPopWnd::Destroy()
{
m_xstrDividedChat.ClearAllNodes();
Init();
}
VOID CChatPopWnd::CreateChatPopWnd(INT nID, CWHWilImageData* pxWndImage, INT nFrameImgIdx, INT nStartX, INT nStartY, INT nWidth, INT nHeight, BOOL bCanMove)
{
CreateGameWnd(nID, pxWndImage, nFrameImgIdx, bCanMove, nStartX, nStartY, nWidth, nHeight);
SetRect(&m_rcChatPopFrame, 40, 29, 531, 308);
SetRect(&m_rcEditBoxFrame, 36, 312, 535, 328);
m_xChatPopBtn.CreateGameBtn(pxWndImage, 372, 373, nStartX+542, nStartY+353);
}
BOOL CChatPopWnd::MsgAdd(DWORD dwFontColor, DWORD dwFontBackColor, CHAR* szMsg)
{
CHAR szChatMsg[MAX_PATH];
if ( szMsg != NULL )
{
strcpy(szChatMsg, szMsg);
if ( szChatMsg[0] != NULL )
{
INT nLineCnt;
CHAR szDivied[MAX_PATH*2];
CHAR szArg[5][MAX_PATH];
ZeroMemory(szDivied, MAX_PATH*2);
ZeroMemory(&szArg[0], MAX_PATH*5);
g_xMainWnd.StringDivide(m_rcChatPopFrame.right-m_rcChatPopFrame.left, nLineCnt, szChatMsg, szDivied);
sscanf(szDivied, "%[^`]%*c %[^`]%*c %[^`]%*c %[^`]%*c %[^`]%*c", szArg[0], szArg[1], szArg[2], szArg[3], szArg[4]);
if ( nLineCnt > 5 ) nLineCnt = 5;
for ( INT nCnt = 0; nCnt < nLineCnt; nCnt++ )
{
if ( m_nCanScrlCnt )
m_nCurrStartChatLine = m_nCanScrlCnt;
if ( m_xstrDividedChat.GetCounter() >= _MAX_CHATLINE_POPUP )
{
m_nCurrStartChatLine++;
m_nCanScrlCnt++;
}
CHATSTRING stChatStr;
stChatStr.dwFontColor = dwFontColor;
stChatStr.dwFontBackColor = dwFontBackColor;
stChatStr.strChat = szArg[nCnt];
m_xstrDividedChat.AddNode(stChatStr);
}
}
return TRUE;
}
return FALSE;
}
VOID CChatPopWnd::ShowChatPopWnd()
{
ShowGameWnd();
// 盲泼 府胶飘甫 焊咯霖促.
if ( !m_xstrDividedChat.CheckEmpty() )
{
m_xstrDividedChat.MoveCurrentToTop();
m_xstrDividedChat.MoveNode(m_nCurrStartChatLine);
INT nLine = 0;
INT nMaxLine;
if ( !m_nCurrStartChatLine )
{
if ( !m_nCanScrlCnt )
nMaxLine = m_xstrDividedChat.GetCounter();
else
nMaxLine = _MAX_CHATLINE_POPUP;
}
else
nMaxLine = (m_nCurrStartChatLine+_MAX_CHATLINE_POPUP) > m_xstrDividedChat.GetCounter() ?
m_xstrDividedChat.GetCounter() : m_nCurrStartChatLine+_MAX_CHATLINE_POPUP;
for ( INT nCnt = m_nCurrStartChatLine; nCnt < nMaxLine; nCnt++ )
{
LPCHATSTRING pstChatString;
pstChatString = m_xstrDividedChat.GetCurrentData();
//g_xMainWnd.PutsHan(g_xMainWnd.GetBackBuffer(),
// m_rcWnd.left+m_rcChatPopFrame.left, m_rcWnd.top+m_rcChatPopFrame.top+nLine*14,
// pstChatString->dwFontBackColor, pstChatString->dwFontColor, pstChatString->strChat.begin());
m_xstrDividedChat.MoveNextNode();
nLine++;
}
}
m_xChatPopBtn.ShowGameBtn();
}
BOOL CChatPopWnd::OnLButtonUp(POINT ptMouse)
{
MoveWindow(g_xChatEditBox.GetSafehWnd(), g_xMainWnd.m_rcWindow.left + m_rcWnd.left + m_rcEditBoxFrame.left,
g_xMainWnd.m_rcWindow.top + m_rcWnd.top + m_rcEditBoxFrame.top,
m_rcEditBoxFrame.right - m_rcEditBoxFrame.left,
m_rcEditBoxFrame.bottom - m_rcEditBoxFrame.top, TRUE);
if ( m_xChatPopBtn.OnLButtonUp(ptMouse) ) return TRUE;
return FALSE;
}
BOOL CChatPopWnd::OnLButtonDown(POINT ptMouse)
{
if ( m_xChatPopBtn.OnLButtonDown(ptMouse) ) return TRUE;
return FALSE;
}
VOID CChatPopWnd::OnMouseMove(POINT ptMouse)
{
m_xChatPopBtn.ChangeRect(m_rcWnd.left+542, m_rcWnd.top+353);
m_xChatPopBtn.OnMouseMove(ptMouse);
}
VOID CChatPopWnd::OnScrollDown()
{
if ( m_nCurrStartChatLine > 0 ) m_nCurrStartChatLine--;
}
VOID CChatPopWnd::OnScrollUp()
{
if ( m_nCurrStartChatLine < m_xstrDividedChat.GetCounter()-_MAX_CHATLINE_POPUP ) m_nCurrStartChatLine++;
}
VOID CChatPopWnd::SetStatusBtnInit()
{
m_xChatPopBtn.SetBtnState(_BTN_STATE_NORMAL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -