📄 dynamictitle.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 + -