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

📄 dlgtask.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 2 页
字号:
							{
								i -= i - j;
								break;
							}
						}
					}
					//----------End the english version's process(jump line)----------//
					if ( nLineNum != strlen ( m_TaskLink[m_nLinkAmount].strText ) )
						m_nDlgHeight += 18 ;
					if ( nSingle % 2 == 0 )
					{
						nSingle= 0 ;
						nLineNum = 0 ;
						m_TaskLink[m_nLinkAmount].nLineIndex [nLineIndex] = i + 1 ;
						nLineIndex++ ;
					}
					else
					{
						i -= nLineNum - TEXT_LIMIT;
						m_TaskLink[m_nLinkAmount].nLineIndex [nLineIndex] = i + 1 - ( nLineNum - TEXT_LIMIT );
						nSingle = 0 ;
						nLineNum = 0 ;
						nLineIndex++ ;
					}
				}
			}
			m_TaskLink[m_nLinkAmount].nLineNum = nLineIndex ;
			if ( nSingle % 2 == 0 )
			{
				m_TaskLink[m_nLinkAmount].nLineIndex [nLineIndex] = i + 1 ;
			}
			else
			{
				m_TaskLink[m_nLinkAmount].nLineIndex [nLineIndex] = i ;
			}
			m_TaskLink[m_nLinkAmount].nLineNum = nLineIndex ;
			
			m_TaskLink[m_nLinkAmount].Rect = CRect( 164, nLastHeight, 164 + LINK_LIMIT * 6, m_nDlgHeight + 18 ) ;
			m_nDlgHeight += 18 ;
		}
		break ;
	case 2:
		{
			CRect rect ;
			m_TaskEdtAnswer.GetWindowRect ( rect ) ;
			m_TaskEdtAnswer.MoveWindow ( 164,
										 m_nDlgHeight + 18,
										 rect.Width (),
										 rect.Height (),
										 false ) ;
			m_TaskEdtAnswer.m_EditRect.MoveWindow(164 ,
												m_nDlgHeight +18,
												180,
												18,
												false);
			m_TaskBtnAnswer.MoveWindow ( 164,
										 m_nDlgHeight + 42,
										 50,
										 20,
										 false ) ;
			CDlgTask::GetWindowRect ( rect ) ;
			m_TaskEdtAnswer.ReInit(rect.left,rect.top);
			m_TaskEdtAnswer.SetEditBkID("Edit230");
			m_TaskEdtAnswer.SetLimitText ( m_TaskEdit.dwData ) ;
			m_TaskBtnAnswer.Init ( rect.left, rect.top, "Button0" ) ;
			m_nDlgHeight += 60 ;
		}
	}
	if (m_nDlgHeight + 65 > 216 )
	{
		CRect pRect,bRect;
		CDlgTask::GetWindowRect(pRect);
		CDlgTask::MoveWindow(m_Pnt.x,m_Pnt.y,pRect.Width(),m_nDlgHeight + 65);
		m_CloseBtn.GetWindowRect(bRect);
		m_CloseBtn.MoveWindow(bRect.left - pRect.left,m_nDlgHeight + 65 - bRect.Height(),bRect.Width(),bRect.Height());
		m_CloseBtn.ReInit(pRect.left,pRect.top);
	}
	else
	{
		CRect pRect,bRect;
		CDlgTask::GetWindowRect(pRect);
		CDlgTask::MoveWindow(m_Pnt.x,m_Pnt.y,pRect.Width(), 235);
		m_CloseBtn.GetWindowRect(bRect);
		m_CloseBtn.MoveWindow(bRect.left - pRect.left,209,bRect.Width(),bRect.Height());
		m_CloseBtn.ReInit(pRect.left,pRect.top);		
	}

}

void CDlgTask::Show()
{
	int ShowHeight = 0 ;
	int j = 0;
	// Show the Dialog
	CAni* pShowAni = g_objGameDataSet.GetDataAni ( ( char * )g_strControlAni,
												   "Dialog23",
												   EXIGENCE_IMMEDIATE ) ;
	if ( pShowAni != NULL )
	{
			CRect rect;
			CDlgTask::GetWindowRect (rect);
		
//			CMyBitmap::ShowRect (m_Pnt.x, m_Pnt.y ,m_Pnt.x + rect.Width (), m_Pnt.y + rect.Height (),0xffff0000);

			pShowAni->Show( 0,
							m_Pnt.x,
							m_Pnt.y ) ;
			int nHeight = rect.Height () - 135 - 100;
			if (nHeight > 0)
				pShowAni->ShowEx( 1,
								  m_Pnt.x + 6,
								  m_Pnt.y + 135,
								  m_DlgRect,
								  m_DlgRect.Width(),
								  nHeight ) ;
			if (nHeight < 0)
				pShowAni->Show(2,m_Pnt.x ,m_Pnt.y + 135);
			else 
				pShowAni->Show (2, m_Pnt.x,m_Pnt.y + rect.Height () - 100);
	}
	else 
		return ;

	// Show the headpic
	if ( m_nPicIndex != -1 )
	{
		CAni* FaceAni = g_objGameDataSet.GetNpcFaceIcon ( m_nPicIndex,
														  EXIGENCE_IMMEDIATE ) ;
		if ( FaceAni != NULL )
		{
			m_PicSize = FaceAni->GetSize ( 0 ) ;
			FaceAni->ShowEx ( 0,
							  m_Pnt.x + 47,
							  m_Pnt.y + 47,
							  CRect ( 0, 0, m_PicSize.iWidth, m_PicSize.iHeight ), 
							  HEADPIC_WIDTH,
							  HEADPIC_HEIGHT ) ;
		}
	}

	// Show the ask text
	for ( int i = 0; i < m_nTextAmount; i++ )
	{
		for ( j = 0; j < m_TaskText[i].nLineNum; j++ )
		{
			char tempChar[TEXT_LIMIT + 1] = "";
			strncpy ( tempChar,
					  m_TaskText[i].strText + m_TaskText[i].nLineIndex[j],
					  m_TaskText[i].nLineIndex[j + 1] - m_TaskText[i].nLineIndex[j] ) ;
			if ( m_TaskText[i].nLineIndex[j + 1] - m_TaskText[i].nLineIndex[j] == TEXT_LIMIT )
				tempChar[TEXT_LIMIT] = NULL ;
			else
				tempChar[m_TaskText[i].nLineIndex[j + 1] - m_TaskText[i].nLineIndex[j]] = NULL ;
			CMyBitmap::ShowString ( m_Pnt.x + 164,
									m_Pnt.y + 46 + ShowHeight,
									0xffff00,
									tempChar ) ;
			ShowHeight += 18 ;
		}
	}

	// Show the link text

	for ( i = 0; i < m_nLinkAmount; i++ )
	{
		ShowHeight = 0 ;

		for ( j = 0; j < m_TaskLink[i].nLineNum; j++ )
		{
			char tempChar[LINK_LIMIT + 1] = "";
			int nLen = abs(m_TaskLink[i].nLineIndex[j + 1] - m_TaskLink[i].nLineIndex[j]);
			strncpy ( tempChar,
					  m_TaskLink[i].strText + m_TaskLink[i].nLineIndex[j],
					  nLen ) ;
			if ( m_TaskLink[i].nLineIndex[j + 1] - m_TaskLink[i].nLineIndex[j] == LINK_LIMIT )
				tempChar[LINK_LIMIT] = NULL ;
			else
				tempChar[m_TaskLink[i].nLineIndex[j + 1] - m_TaskLink[i].nLineIndex[j]] = NULL ;
			
			if ( m_btCurLink == i && m_bMouseMove )
				CMyBitmap::ShowString ( m_Pnt.x + m_TaskLink[i].Rect.left,
										m_Pnt.y + m_TaskLink[i].Rect.top + ShowHeight,
										0xff0000,
										tempChar ) ;
			else
				CMyBitmap::ShowString ( m_Pnt.x + m_TaskLink[i].Rect.left,
										m_Pnt.y + m_TaskLink[i].Rect.top + ShowHeight,
										0xffffff,
										tempChar ) ;
			ShowHeight += 18 * ( j + 1 ) ;
		}
	}

	
	// Show the edit and the button
	if ( m_nEditAmount > 0 )
	{
		if ( m_TaskEdit.strTitle )
		{
			CRect rect, prect ;
			m_TaskEdtAnswer.GetWindowRect ( rect ) ;
			CDlgTask::GetWindowRect ( prect ) ;
			CMyBitmap::ShowString ( m_Pnt.x + ( rect.left - prect.left ),
									m_Pnt.y + ( rect.top - prect.top ) - 18,
									0xffff00,
									m_TaskEdit.strTitle ) ;
		}
		m_TaskEdtAnswer.Show ( m_Pnt.x, m_Pnt.y ) ;
		m_TaskBtnAnswer.Show ( m_Pnt.x, m_Pnt.y ) ;
	}

	// Show the close button
	m_CloseBtn.Show ( m_Pnt.x, m_Pnt.y ) ;
}

void CDlgTask::OnMouseMove(UINT nFlags, CPoint point) 
{
	if ( m_bMouseMove )
	{
		if ( !m_TaskLink[m_btCurLink].Rect.PtInRect ( point ) )
			m_bMouseMove = false ;
	}
	else
	{
		for ( int i = 0; i < m_nLinkAmount; i++ )
		{
			if ( m_TaskLink[i].Rect.PtInRect ( point ) )
			{
				DXPlaySound("Sound/Mouse_Move.wav");
				m_bMouseMove = true ;
				m_btCurLink = i ;
				break ;
			}
		}
	}
	CDialog::OnMouseMove(nFlags, point);
}

void CDlgTask::OnLButtonDown(UINT nFlags, CPoint point) 
{
	if ( m_bMouseMove )
	{
		DXPlaySound("Sound/Server_Sgroup.wav");
		g_objHero.AnswerTaskDialog ( m_TaskLink[m_btCurLink].nIndex, NULL ) ;
		CDlgTask::EnableWindow( false ) ;
	}
	else
	{
		LPARAM lParam ;
		lParam = MAKELONG( point.x + m_Pnt.x, point.y + m_Pnt.y ) ;
		CDlgTask::GetParent()->PostMessage( WM_LBUTTONDOWN, nFlags, lParam ) ;
	}
	CDialog::OnLButtonDown(nFlags, point);
}

void CDlgTask::OnTaskBtnAnswer() 
{
	if ( m_TaskEdtAnswer.GetWindowTextLength () > 0 )
	{
		char strAnswer[32] ; 
		m_TaskEdtAnswer.GetWindowText ( strAnswer, 32) ;
		if(!StringCheck(strAnswer))
		{ 
			const int TASK_EDIT_ERROR = 100500;
			g_objGameMsg.AddMsg((char*)g_objGameDataSet.GetStr(TASK_EDIT_ERROR));
			m_TaskEdtAnswer.SetWindowText("");
			return ;
		}
		g_objHero.AnswerTaskDialog ( m_TaskEdit.nIndex, strAnswer ) ;
		CDlgTask::EnableWindow( false ) ;
	}
}

void CDlgTask::OnBtnClose() 
{
	DXPlaySound("Sound/window_close.wav");
	g_objHero.AnswerTaskDialog ( m_nCloseIndex, NULL ) ;
	CDlgTask::EnableWindow( false ) ;
}

void CDlgTask::OnLButtonUp(UINT nFlags, CPoint point) 
{
	LPARAM lParam ;
	lParam = MAKELONG( point.x + m_Pnt.x, point.y + m_Pnt.y ) ;
	CDlgTask::GetParent()->PostMessage( WM_LBUTTONUP, nFlags, lParam ) ;
	
	CDialog::OnLButtonUp(nFlags, point);
}

void CDlgTask::OnRButtonDown(UINT nFlags, CPoint point) 
{
	LPARAM lParam ;
	lParam = MAKELONG( point.x + m_Pnt.x, point.y + m_Pnt.y ) ;
	CDlgTask::GetParent()->PostMessage( WM_RBUTTONDOWN, nFlags, lParam ) ;
	
	CDialog::OnRButtonDown(nFlags, point);
}

void CDlgTask::OnRButtonUp(UINT nFlags, CPoint point) 
{
	LPARAM lParam ;
	lParam = MAKELONG( point.x + m_Pnt.x, point.y + m_Pnt.y ) ;
	CDlgTask::GetParent()->PostMessage( WM_RBUTTONUP, nFlags, lParam ) ;
	
	CDialog::OnRButtonUp(nFlags, point);
}


⌨️ 快捷键说明

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