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

📄 dynamictitle.cpp

📁 一些关于C++开发的多媒体制作书籍的源代码
💻 CPP
字号:
/*
* Copyright (c) 2002, Bcdliang
* All rights reserved.
*
* 文件名称:DynamicTitle.cpp
* 摘    要:类CDynamicTitle的实现
*
* 当前版本:1.01
* 作    者:LIANG Zheng
* 完成日期:2002年8月11日
*/

#include "stdafx.h"
#include "SimpleMP3.h"
#include "SimpleMP3Dlg.h"
#include "DynamicTitle.h"

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

// Control value
const int DEFAULT_EFFECT_CTRL = 3;
const int DEFAULT_STEP_CTRL = 3;
const int DEFAULT_TICK_CTRL = 2;

/////////////////////////////////////////////////////////////////////////////
// CDynamicTitle dialog


CDynamicTitle::CDynamicTitle(UINT nStyle, CWnd* pParent /*=NULL*/)
	: CDialog(CDynamicTitle::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDynamicTitle)
	m_nEffect = -1;
	m_nStep = -1;
	m_nTick = -1;
	//}}AFX_DATA_INIT
	this->m_pDlg=(CSimpleMP3Dlg *)pParent;
}


void CDynamicTitle::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDynamicTitle)
	DDX_Control(pDX, IDC_TITLE, m_Title);
	DDX_Radio(pDX, IDC_EFFECT1, m_nEffect);
	DDX_CBIndex(pDX, IDC_STEP, m_nStep);
	DDX_CBIndex(pDX, IDC_TICK, m_nTick);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDynamicTitle, CDialog)
	//{{AFX_MSG_MAP(CDynamicTitle)
	ON_BN_CLICKED(IDC_EFFECT1, OnEffect1)
	ON_BN_CLICKED(IDC_EFFECT2, OnEffect2)
	ON_BN_CLICKED(IDC_EFFECT3, OnEffect3)
	ON_BN_CLICKED(IDC_EFFECT4, OnEffect4)
	ON_BN_CLICKED(IDC_DEFAULT, OnDefault)
	ON_CBN_SELCHANGE(IDC_STEP, OnSelchangeStep)
	ON_CBN_SELCHANGE(IDC_TICK, OnSelchangeTick)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDynamicTitle message handlers

BOOL CDynamicTitle::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	UINT nEffect = this->m_pDlg->m_Title.GetScrollStyle();
	UINT nStep = this->m_pDlg->m_Title.GetStep();
	UINT nTick = this->m_pDlg->m_Title.GetTick();

	m_Title.Initialize();
	m_Title.SetBkColor(RGB(0, 0, 0));
	m_Title.SetTextColor(RGB(0, 255, 0));
	m_Title.SetTextVAlign(CScrollLabel::SL_TA_VCENTER);
	m_Title.SetScrollStyle(nEffect);
	m_Title.SetStep(nStep);
	m_Title.SetTick(nTick);

	switch (nEffect)
	{	
	case CScrollLabel::SL_NONE:
		m_nEffect = 0;
		break;
	case CScrollLabel::SL_HSCROLLLEFT:
		m_nEffect = 1;
		break;
	case CScrollLabel::SL_HSCROLLRIGHT:
		m_nEffect = 2;
		break;
	case CScrollLabel::SL_HSCROLLBOTH:
		m_nEffect = 3;
		break;
	default:
		m_nEffect = 0;
		break;
	}

	switch (nStep)
	{
	case 1:
		m_nStep = 0;
		break;
	case 2:
		m_nStep = 1;
		break;
	case 3:
		m_nStep = 2;
		break;
	case 4:
		m_nStep = 3;
		break;
	case 5:
		m_nStep = 4;
		break;
	case 6:
		m_nStep = 5;
		break;
	case 7:
		m_nStep = 6;
		break;
	case 8:
		m_nStep = 7;
		break;
	case 9:
		m_nStep = 8;
		break;
	case 10:
		m_nStep = 9;
		break;
	default:
		m_nStep = DEFAULT_STEP_CTRL;
		break;
	}

	switch (nTick)
	{
	case 50:
		m_nTick = 0;
		break;
	case 100:
		m_nTick = 1;
		break;
	case 200:
		m_nTick = 2;
		break;
	case 300:
		m_nTick = 3;
		break;
	case 500:
		m_nTick = 4;
		break;
	case 800:
		m_nTick = 5;
		break;
	case 1000:
		m_nTick = 6;
		break;
	case 1500:
		m_nTick = 7;
		break;
	case 2000:
		m_nTick = 8;
		break;
	default:
		m_nTick = 2;
		break;
	}
	UpdateData(false);
	this->SetEffect();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDynamicTitle::OnOK() 
{
	// TODO: Add extra validation here
	this->m_pDlg->m_Title.SetScrollStyle(this->m_Title.GetScrollStyle());
	this->m_pDlg->m_Title.SetStep(this->m_Title.GetStep());
	this->m_pDlg->m_Title.SetTick(this->m_Title.GetTick());
	CDialog::OnOK();
}


////////////////////////////////////////////////////////////////////////
/*
* 函数名称:SetEffect
* 函数介绍:根据效果复选框的选择设定效果并更新控件状态
* 输入参数:无
* 输出参数:无
* 返回值  :无
*/
void CDynamicTitle::SetEffect()
{
	this->UpdateData(true);

	// Set control status
	if (this->m_nEffect == 0)	// Effect = NONE
	{
		(this->GetDlgItem(IDC_STEP))->EnableWindow(false);
		(this->GetDlgItem(IDC_TICK))->EnableWindow(false);
	}
	else
	{
		(this->GetDlgItem(IDC_STEP))->EnableWindow(true);
		(this->GetDlgItem(IDC_TICK))->EnableWindow(true);
	}

	// Set title's scroll style
	switch (this->m_nEffect)
	{
	case 0:
		this->m_Title.SetScrollStyle(CScrollLabel::SL_NONE);
		break;
	case 1:
		this->m_Title.SetScrollStyle(CScrollLabel::SL_HSCROLLLEFT);
		break;
	case 2:
		this->m_Title.SetScrollStyle(CScrollLabel::SL_HSCROLLRIGHT);
		break;
	case 3:
		this->m_Title.SetScrollStyle(CScrollLabel::SL_HSCROLLBOTH);
		break;
	default:
		break;
	}
}


void CDynamicTitle::OnEffect1() 
{
	// TODO: Add your control notification handler code here
	this->SetEffect();
}

void CDynamicTitle::OnEffect2() 
{
	// TODO: Add your control notification handler code here
	this->SetEffect();
}

void CDynamicTitle::OnEffect3() 
{
	// TODO: Add your control notification handler code here
	this->SetEffect();
}

void CDynamicTitle::OnEffect4() 
{
	// TODO: Add your control notification handler code here
	this->SetEffect();
}

void CDynamicTitle::OnDefault() 
{
	// TODO: Add your control notification handler code here
	m_Title.Default();

	// Effect
	m_nEffect = DEFAULT_EFFECT_CTRL;

	// Step
	m_nStep = DEFAULT_STEP_CTRL;

	// Tick
	m_nTick = DEFAULT_TICK_CTRL;

	UpdateData(false);
	this->SetEffect();
}

void CDynamicTitle::OnSelchangeStep() 
{
	// TODO: Add your control notification handler code here
	this->UpdateData(true);

	switch (this->m_nStep)
	{
	case 0:
		m_Title.SetStep(1);
		break;
	case 1:
		m_Title.SetStep(2);
		break;
	case 2:
		m_Title.SetStep(3);
		break;
	case 3:
		m_Title.SetStep(4);
		break;
	case 4:
		m_Title.SetStep(5);
		break;
	case 5:
		m_Title.SetStep(6);
		break;
	case 6:
		m_Title.SetStep(7);
		break;
	case 7:
		m_Title.SetStep(8);
		break;
	case 8:
		m_Title.SetStep(9);
		break;
	case 9:
		m_Title.SetStep(10);
		break;
	default:
		m_Title.SetStep(4);
		break;
	}
}

void CDynamicTitle::OnSelchangeTick() 
{
	// TODO: Add your control notification handler code here
	this->UpdateData(true);

	// Combo items
	//50
	//100
	//200(默认)
	//300
	//500
	//800
	//1000
	//1500
	//2000

	switch (this->m_nTick)
	{
	case 0:
		m_Title.SetTick(50);
		break;
	case 1:
		m_Title.SetTick(100);
		break;
	case 2:
		m_Title.SetTick(200);
		break;
	case 3:
		m_Title.SetTick(300);
		break;
	case 4:
		m_Title.SetTick(500);
		break;
	case 5:
		m_Title.SetTick(800);
		break;
	case 6:
		m_Title.SetTick(1000);
		break;
	case 7:
		m_Title.SetTick(1500);
		break;
	case 8:
		m_Title.SetTick(2000);
		break;
	default:
		m_Title.SetTick(200);
		break;
	}
}


⌨️ 快捷键说明

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