⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatdialog.cpp

📁 墨香最新私服
💻 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 + -