📄 chatdialog.cpp
字号:
// ChatDialog.cpp: implementation of the CChatDialog class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ChatDialog.h"
#include "WindowIdEnum.h"
#include "./Interface/cListDialog.h"
#include "./Interface/cEditBox.h"
#include "./Interface/cPushupButton.h"
#include "cImeEx.h"
#include "GlobalEventFunc.h"
#include "./Input/Mouse.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CChatDialog::CChatDialog()
{
m_type = WT_CHATDIALOG;
m_pChatEditBox = NULL;
m_bHideChatDialog = FALSE;
m_bShowMenu = FALSE;
m_bShowMunpaTab = FALSE;
}
CChatDialog::~CChatDialog()
{
}
void CChatDialog::Linking()
{
m_pChatEditBox = (cEditBox *)GetWindowForID(MI_CHATEDITBOX);
m_pChatEditBox->SetValidCheck( VCM_DEFAULT );
m_pChatEditBox->SetEditFunc( GAMEIN_ChatFunc );
m_pSheet[WHOLE] = (cListDialog*)GetWindowForID(CTI_SHEET1);
m_pSheet[PARTY] = (cListDialog*)GetWindowForID(CTI_SHEET2);
m_pSheet[MUNPA] = (cListDialog*)GetWindowForID(CTI_SHEET3);
m_pPBMenu[WHOLE] = (cPushupButton*)GetWindowForID(CTI_BTN_WHOLE);
m_pPBMenu[PARTY] = (cPushupButton*)GetWindowForID(CTI_BTN_PARTY);
m_pPBMenu[MUNPA] = (cPushupButton*)GetWindowForID(CTI_BTN_MUNPA);
m_lMenuX = (LONG)m_pPBMenu[WHOLE]->GetAbsX();
m_lMenuY = (LONG)m_pPBMenu[WHOLE]->GetAbsY();
m_lMenuHeight = (LONG)m_pPBMenu[WHOLE]->GetHeight();
m_pSheet[WHOLE]->SetActive( TRUE );
m_pSheet[PARTY]->SetActive( FALSE );
m_pSheet[MUNPA]->SetActive( FALSE );
m_pPBMenu[WHOLE]->SetActive( TRUE );
m_pPBMenu[PARTY]->SetActive( FALSE );
m_pPBMenu[MUNPA]->SetActive( FALSE );
m_nCurSheetNum = WHOLE;
//皋春滚瓢困摹
//滚瓢臭捞
}
DWORD CChatDialog::ActionEvent( CMouse * mouseInfo )
{
DWORD we = cDialog::ActionEvent( mouseInfo );
if( m_bShowMenu )
if( mouseInfo->LButtonDown() ) //促弗镑 努腐窍搁 皋春 皑眠扁
{
if( !(we & WE_MOUSEOVER) )
ShowMenu( FALSE );
}
else
{
we |= WE_LBTNCLICK;
}
return we;
}
void CChatDialog::AddMsg( BYTE ChatLimit, DWORD MsgColor, char* str )
{
int nLen = strlen( str );
char buf[128];
int nCpyNum = 0;
while( nLen > CHATLIST_TEXTLEN )
{
if( ( str + CHATLIST_TEXTLEN ) != CharNext( CharPrev( str, str + CHATLIST_TEXTLEN ) ) )
nCpyNum = CHATLIST_TEXTLEN - 1;
else
nCpyNum = CHATLIST_TEXTLEN;
strncpy( buf, str, nCpyNum );
buf[nCpyNum] = 0;
GetSheet(ChatLimit)->AddItem( buf, MsgColor );
nLen -= nCpyNum;
str += nCpyNum;
if( *str == ' ' ) ++str; //扼牢 霉臂磊啊 胶其捞胶啊 酒聪档废...
}
if( nLen > 0 )
GetSheet(ChatLimit)->AddItem( str, MsgColor );
}
void CChatDialog::AddMsgAll( DWORD MsgColor, char* str )
{
int nLen = strlen( str );
char buf[128];
int nCpyNum = 0;
while( nLen > CHATLIST_TEXTLEN )
{
if( ( str + CHATLIST_TEXTLEN ) != CharNext( CharPrev( str, str + CHATLIST_TEXTLEN ) ) )
nCpyNum = CHATLIST_TEXTLEN - 1;
else
nCpyNum = CHATLIST_TEXTLEN;
strncpy( buf, str, nCpyNum );
buf[nCpyNum] = 0;
GetSheet(WHOLE)->AddItem( buf, MsgColor );
GetSheet(PARTY)->AddItem( buf, MsgColor );
GetSheet(MUNPA)->AddItem( buf, MsgColor );
nLen -= nCpyNum;
str += nCpyNum;
if( *str == ' ' ) ++str; //扼牢 霉臂磊啊 胶其捞胶啊 酒聪档废...
}
if( nLen > 0 )
{
GetSheet(WHOLE)->AddItem( str, MsgColor );
GetSheet(PARTY)->AddItem( str, MsgColor );
GetSheet(MUNPA)->AddItem( str, MsgColor );
}
}
void CChatDialog::OnActionEvent(LONG lId, void * p, DWORD we)
{
if( we & WE_BTNCLICK )
{
switch( lId )
{
case CTI_BTN_TALLER:
{
m_pSheet[WHOLE]->onSize( TRUE );
m_pSheet[PARTY]->onSize( TRUE );
m_pSheet[MUNPA]->onSize( TRUE );
}
break;
case CTI_BTN_SMALLER:
{
m_pSheet[WHOLE]->onSize( FALSE );
m_pSheet[PARTY]->onSize( FALSE );
m_pSheet[MUNPA]->onSize( FALSE );
}
break;
}
}
else if( we & WE_PUSHDOWN )
{
switch( lId )
{
case CTI_BTN_WHOLE:
SelectMenu(WHOLE);
break;
case CTI_BTN_PARTY:
SelectMenu(PARTY);
break;
case CTI_BTN_MUNPA:
SelectMenu(MUNPA);
break;
}
}
else if( we & WE_PUSHUP)
{
SelectMenu(-1);
}
}
void CChatDialog::ShowMenu( BOOL bShow )
{
m_bShowMenu = bShow;
if( bShow )
{
LONG y = m_lMenuY;
for( int i = 0 ; i < MAX_CHAT_COUNT ; ++i )
{
if( i != m_nCurSheetNum )
{
y -= m_lMenuHeight;
m_pPBMenu[i]->SetAbsXY( m_lMenuX, y );
m_pPBMenu[i]->SetActive( TRUE );
}
}
}
else
{
for( int i = 0 ; i < MAX_CHAT_COUNT ; ++i )
{
if( i != m_nCurSheetNum )
m_pPBMenu[i]->SetActive( FALSE );
else
m_pPBMenu[i]->SetActive( TRUE );
m_pPBMenu[i]->SetPush( FALSE );
}
}
}
void CChatDialog::SelectMenu( int nSheet )
{
if( nSheet > 2 ) return;
if( nSheet < 0 ) //Menu HIDE
{
ShowMenu( FALSE );
}
else if( m_nCurSheetNum == nSheet )
{
ShowMenu( TRUE );
}
else
{
m_pPBMenu[nSheet]->SetAbsXY( m_lMenuX, m_lMenuY );
/*
for( int i = 0 ; i < MAX_CHAT_COUNT ; ++i )
{
if( i != nSheet )
{
m_pSheet[i]->SetActive( FALSE );
}
else
{
if( !m_bHideChatDialog )
m_pSheet[i]->SetActive( TRUE );
m_pPBMenu[i]->SetAbsXY( m_lMenuX, m_lMenuY );
}
}
*/
m_nCurSheetNum = nSheet;
ShowMenu( FALSE );
}
}
void CChatDialog::HideChatDialog( BOOL bHide )
{
m_bHideChatDialog = bHide;
if( bHide )
{
//m_pSheet[m_nCurSheetNum]->SetActive( FALSE );
m_pSheet[WHOLE]->SetActive( FALSE );
}
else
{
//m_pSheet[m_nCurSheetNum]->SetActive( TRUE );
m_pSheet[WHOLE]->SetActive( TRUE );
}
}
void CChatDialog::ShowMunpaTab( BOOL bShow )
{
ShowMenu( FALSE );
if( bShow == FALSE )
if( m_nCurSheetNum == MUNPA )
{
SelectMenu( WHOLE );
}
m_bShowMunpaTab = bShow;
}
BYTE CChatDialog::GetLineNum()
{
return m_pSheet[m_nCurSheetNum]->GetMiddleImageNum();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -