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

📄 dlgtask.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// DlgTask.cpp : implementation file
//

#include "stdafx.h"
#include "MyShell.h"
#include "DlgTask.h"
#include "GameMsg.h"
#include "Hero.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgTask dialog


CDlgTask::CDlgTask(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgTask::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgTask)
	m_bShow = false ;
	m_bMouseMove = false ;
	m_Pnt = CPoint ( 0, 0 ) ;
	m_nCloseIndex = 0 ;
	m_nTextAmount = 0 ;
	m_nLinkAmount = 0 ;
	m_nEditAmount = 0 ;
	m_nDlgHeight = 150 ;
	m_nAnswerIndex = 0 ;
	m_nEditIndex = 0 ;
	m_DlgRect = CRect ( 0, 0, 512, 64 ) ;
	//}}AFX_DATA_INIT
}


void CDlgTask::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgTask)
	DDX_Control(pDX, IDC_TASK_EDT_ANSWER, m_TaskEdtAnswer);
	DDX_Control(pDX, IDC_TASK_BTN_ANSWER, m_TaskBtnAnswer);
	DDX_Control(pDX, IDC_BTN_CLOSE, m_CloseBtn);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgTask, CDialog)
	//{{AFX_MSG_MAP(CDlgTask)
	ON_WM_CTLCOLOR()
	ON_WM_MOVE()
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	ON_BN_CLICKED(IDC_TASK_BTN_ANSWER, OnTaskBtnAnswer)
	ON_BN_CLICKED(IDC_BTN_CLOSE, OnBtnClose)
	ON_WM_LBUTTONUP()
	ON_WM_RBUTTONDOWN()
	ON_WM_RBUTTONUP()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgTask message handlers

LRESULT CDlgTask::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your specialized code here and/or call the base class
	switch ( message )
	{
	case WM_ENABLE:
		if ( wParam )
		{
			InitTaskDialog () ;
			DXPlaySound("Sound/Open.wav");			
		}
		else
		{
			DXPlaySound("Sound/window_close.wav");			
			ResetTaskDialog() ;			
		}
		m_bShow = wParam ;
		break ;
	case WM_COMMAND:
		if ( wParam == 2 )
		{
			return true ;
		}
		else if ( wParam == 1 )
		{
			return true ;
		}
		break ;
	}
	return CDialog::WindowProc(message, wParam, lParam);
}

HBRUSH CDlgTask::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	pDC->SetBkMode ( TRANSPARENT ) ;
	return g_StockBrush;
}

BOOL CDlgTask::OnInitDialog() 
{
	CDialog::OnInitDialog();

	CRect rect ;
	CDlgTask::GetWindowRect ( rect ) ;
	
	// Init the edit
	m_TaskEdtAnswer.Init ( rect.left, rect.top ) ;

	// Init the button
	m_TaskBtnAnswer.Init ( rect.left, rect.top, "Button0") ;
	m_CloseBtn.Init ( rect.left, rect.top, "Button540" ) ;
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgTask::OnMove(int x, int y) 
{
	CDialog::OnMove(x, y);
	
	m_Pnt.x = x ;
	m_Pnt.y = y ;
	
}

void CDlgTask::InitTaskDialog()
{
	m_nPicIndex = -1 ;
	m_TaskEdtAnswer.EnableWindow ( false ) ;
	m_TaskBtnAnswer.EnableWindow ( false ) ;
	int nAmount = g_objHero.GetTaskDialogLineAmount () ;
	if ( nAmount > 0 )
	{
		// Get the format
		m_nAnswerAmount = 0 ;
		for ( int j = 0; j < nAmount; j++ )
		{
			TaskDialogLine* pLine = g_objHero.GetTaskDialogLineByIndex ( j ) ;
			if ( pLine->nType == _TASKDIALOG_LINK || pLine->nType == _TASKDIALOG_EDIT )
				m_nAnswerAmount++ ;
		}
		for ( int i = 0; i < nAmount; i++ )
		{
			TaskDialogLine* pLine = g_objHero.GetTaskDialogLineByIndex ( i ) ;
			switch ( pLine->nType )
			{
			case _TASKDIALOG_TEXT:	
				if ( pLine->szStr ) 
				{
					strcpy ( m_TaskText[m_nTextAmount].strText, pLine->szStr ) ;
					this->SetLineIndex ( 0 ) ;
					m_nTextAmount++ ;
				}
				break ;
			case _TASKDIALOG_LINK:
				if ( pLine->szStr )
				{
					m_nAnswerIndex++ ;
					strcpy ( m_TaskLink[m_nLinkAmount].strText, pLine->szStr ) ;
					this->SetLineIndex ( 1 ) ;
					m_TaskLink[m_nLinkAmount].nIndex = pLine->nIndex ;
					m_nLinkAmount++ ;
				}
				break ;
			case _TASKDIALOG_EDIT:
				{
					m_nAnswerIndex++ ;
					m_nEditIndex = m_nAnswerIndex ;
					m_TaskEdtAnswer.EnableWindow ( true ) ;
					m_TaskBtnAnswer.EnableWindow ( true ) ;
					strcpy ( m_TaskEdit.strTitle, pLine->szStr ) ;
					m_TaskEdit.nIndex = pLine->nIndex ;
					m_TaskEdit.dwData = pLine->dwData ;
					this->SetLineIndex ( 2 ) ;
					m_nEditAmount++ ;
				}
				break ;
			case _TASKDIALOG_PIC:
				m_nPicIndex = pLine->dwData ;
				m_PicPos.x = pLine->posLine.x;
				m_PicPos.y = pLine->posLine.y;
				break ;
			case _TASKDIALOG_DEFAULT:
				m_nCloseIndex = pLine->nIndex ;
				break ;
			}
		}
	}
}

void CDlgTask::ResetTaskDialog()
{
	m_nCloseIndex = 0 ;
	m_nTextAmount = 0 ;
	m_nLinkAmount = 0 ;
	m_nEditAmount = 0 ;
	m_nDlgHeight = 150 ;
	m_nAnswerIndex = 0 ;
	m_nEditIndex = 0 ;
	for(int i =0 ; i< 8; i++)
	{
		strcpy(m_TaskText[i].strText , "");
		strcpy(m_TaskLink[i].strText , "");
	}
	strcpy(m_TaskEdit.strTitle , "");
	m_TaskEdtAnswer.SetWindowText ( NULL ) ;
}

void CDlgTask::SetLineIndex(BYTE btType)
{
	switch ( btType )
	{
	case 0:
		{
			int	nSingle = 0;
			int nLineNum = 0 ;
			int nLineIndex = 1 ;
			m_TaskText[m_nTextAmount].nLineIndex [0] = 0 ;
			for ( int i = 0; i < strlen ( m_TaskText[m_nTextAmount].strText ); i++ )
			{
				if ( CMyBitmap::IsDBCSLeadByte( m_TaskText[m_nTextAmount].strText, i ) )
				{	
					nLineNum += 2;
					i++;
				}
				else
				{
					nLineNum++;
					nSingle++;
				}
				
				if ( nLineNum >= TEXT_LIMIT ) 
				{
					//----------Begin the english version's process(jump line)----------//
					if ( strcmp( g_objGameDataSet.GetVersionInfo(), "English" ) == 0 )
					{
						// Search the last word
						for ( int j = i; j >= 0; j-- )
						{
							if ( m_TaskText[m_nTextAmount].strText[j] == ' ' )
							{
								i -= i - j;
								break;
							}
						}
					}
					//----------End the english version's process(jump line)----------//
					if ( nSingle % 2 == 0 )
					{
						nSingle = 0 ;
						nLineNum = 0 ;
						m_TaskText[m_nTextAmount].nLineIndex [nLineIndex] = i + 1 ;
						nLineIndex++ ;
					}
					else
					{
						i -= nLineNum - TEXT_LIMIT;
						m_TaskText[m_nTextAmount].nLineIndex [nLineIndex] = i + 1 - ( nLineNum - TEXT_LIMIT );
						nSingle= 0 ;
						nLineNum = 0 ;
						nLineIndex++ ;
					}
				}
			}
			m_TaskText[m_nTextAmount].nLineNum = nLineIndex ;
			if ( nSingle % 2 == 0 )
			{
				m_TaskText[m_nTextAmount].nLineIndex [nLineIndex] = i + 1 ;
			}
			else
			{
				m_TaskText[m_nTextAmount].nLineIndex [nLineIndex] = i ;
			}
		}
		break ;
	case 1:
		{
			int	nSingle = 0;
			int nLineNum = 0 ;
			int nLineIndex = 1 ;
			m_TaskLink[m_nLinkAmount].nLineIndex [0] = 0 ;
			int nLastHeight = m_nDlgHeight ;
			for ( int i = 0; i < strlen ( m_TaskLink[m_nLinkAmount].strText ); i++ )
			{
				if ( CMyBitmap::IsDBCSLeadByte( m_TaskLink[m_nLinkAmount].strText, i ) )
				{	
					nLineNum += 2;
					i++;
				}
				else
				{
					nLineNum++;
					nSingle++;
				}
				
				if ( nLineNum >= LINK_LIMIT ) 
				{
					//----------Begin the english version's process(jump line)----------//
					if ( strcmp( g_objGameDataSet.GetVersionInfo(), "English" ) == 0 )
					{
						// Search the last word
						for ( int j = i; j >= 0; j-- )
						{
							if ( m_TaskLink[m_nLinkAmount].strText[j] == ' ' )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -