1239 lines
32 KiB
C++
1239 lines
32 KiB
C++
//---------------------------------------------------------------------------
|
|
#include <vcl.h>
|
|
#pragma hdrstop
|
|
|
|
#include <System.Math.hpp>
|
|
#include <mmsystem.h> //add by tj 2013/12/22
|
|
#include "GlobalUnit.h"
|
|
#include "SetupFormUnit.h"
|
|
#include "MessageFormUnit.h"
|
|
#include "CommonListboxUnit.h"
|
|
|
|
#define TIME_BROWSE 30
|
|
#define BROWSE_LEFT -1
|
|
#define BROWSE_PAUSE 0
|
|
#define BROWSE_RIGHT 1
|
|
#define BROWSE_SPEED 1
|
|
|
|
#define TAP_NOR 0//add by tj 2014/1/10
|
|
#define TAP_FOCUS 1
|
|
#define TAP_DOWN 2
|
|
|
|
const int c_xOriScr = 582,
|
|
c_yOriScr = 327,
|
|
c_xPoint = 89,
|
|
c_yPoint = 0,
|
|
c_wPoint = 53,
|
|
c_hPoint = 126,
|
|
c_rPoint = 114,
|
|
c_rOuter = 129,
|
|
c_rInner = 104,
|
|
c_xDrag = 81,
|
|
c_yDrag = 10,
|
|
c_wDrag = 45,
|
|
// c_hDrag = 80, //add by tj 2013/12/20
|
|
c_hDrag = 77,
|
|
c_xTapPoint = 77,
|
|
c_yTapPoint = 77, //85,
|
|
c_wTapPoint = 74,
|
|
c_hTapPoint = 74,
|
|
c_iScale0 = 125;
|
|
|
|
static const TCursor crHand0 = 0x55,
|
|
crHand1 = 0x56;
|
|
int const nImgStyleNum = 10;
|
|
|
|
|
|
int const s_iBrowseStep = 2; //每次加速增量
|
|
int const s_iMaxTimes = 4; //加速最大次数
|
|
int s_iSpeedDownTimes = 0; //累加次数
|
|
bool s_bLeft = false; //左加速键
|
|
bool s_bRight= false; //右加速键
|
|
//---------------------------------------------------------------------------
|
|
#pragma package(smart_init)
|
|
#pragma link "PNGButton"
|
|
#pragma link "PNGButton"
|
|
#pragma resource "*.dfm"
|
|
|
|
USEFORM("MessageFormUnit.cpp", MessageForm);
|
|
|
|
TSetupForm *SetupForm;
|
|
|
|
extern TPNGButton *g_btnFontChange;
|
|
extern Vcl::Extctrls::TPanel *g_panelFontName;
|
|
extern CommonListBoxUnit::TListBox *g_lbFontSelect;
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TSetupForm::TSetupForm(TComponent* Owner)
|
|
: TForm(Owner)
|
|
{
|
|
m_pPicBack = new TJPEGImage();
|
|
TResourceStream * pResStream = new TResourceStream(int(HInstance), "SetupBackground", RT_RCDATA);
|
|
m_pPicBack->LoadFromStream(pResStream);
|
|
delete pResStream;
|
|
|
|
m_imgBk->Picture->Bitmap->Assign(m_pPicBack);
|
|
|
|
// sFont7 = int(7 * 96.0 / g_yDpi + 0.5);
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TSetupForm::~TSetupForm()
|
|
{
|
|
delete m_pPicBack;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::FormCreate(TObject *Sender)
|
|
{
|
|
//预览风格相关初始化
|
|
// m_pPlayData = NULL;
|
|
// m_nPlayData = 0;
|
|
|
|
//默认获取44拍所有推荐ID
|
|
/*
|
|
m_aStyleNames[0] = "流行";
|
|
m_aStyleNames[1] = "民摇";
|
|
m_aStyleNames[2] = "摇滚";
|
|
m_aStyleNames[3] = "舞曲";
|
|
m_aStyleNames[4] = "爵士";
|
|
m_aStyleNames[5] = "蓝调";
|
|
m_aStyleNames[6] = "桑巴";
|
|
m_aStyleNames[7] = "古典";
|
|
m_aStyleNames[8] = "圆舞曲";
|
|
m_aStyleNames[9] = "独立";
|
|
*/
|
|
|
|
//节拍Radio按钮组初始化
|
|
// g_iMelodyTimeSignature = 0; //缺省为44拍
|
|
m_lstBeat[0] = m_btnBeat44;
|
|
m_lstBeat[1] = m_btnBeat43;
|
|
m_lstBeat[2] = m_btnBeat42;
|
|
m_lstBeat[3] = m_btnBeat86;
|
|
|
|
String strPath = g_strExecutePath.c_str(),
|
|
strImgFile = strPath + L"Poinor";
|
|
m_pGPImgPointerNormal = new Image( strImgFile.c_str() );
|
|
strImgFile = strPath + L"Poihov";
|
|
m_pGPImgPointerHover = new Image( strImgFile.c_str() );
|
|
|
|
Gdiplus::RectF gpOuterRect(c_xOriScr-c_rOuter, c_yOriScr-c_rOuter,
|
|
c_rOuter*2+1, c_rOuter*2+1);
|
|
Gdiplus::RectF gpInnerRect(c_xOriScr-c_rInner, c_yOriScr-c_rInner,
|
|
c_rInner*2+1, c_rInner*2+1);
|
|
Gdiplus::RectF gpPointRect(c_xDrag, c_yDrag, c_wDrag, c_hDrag );
|
|
|
|
m_pGPRgnDrag = new Region( gpPointRect );
|
|
m_pGPRgnClick = new Region( gpOuterRect );
|
|
|
|
GraphicsPath gpPath;
|
|
gpPath.AddEllipse(gpOuterRect);
|
|
m_pGPRgnClick->Intersect(&gpPath);
|
|
gpPath.Reset();
|
|
gpPath.AddEllipse(gpInnerRect);
|
|
m_pGPRgnClick->Exclude(&gpPath);
|
|
|
|
//add by tj 2013/12/20
|
|
strImgFile = strPath + L"tapNor";
|
|
m_pGPImgTapNormal = new Image( strImgFile.c_str() );
|
|
strImgFile = strPath + L"tapFocus";
|
|
m_pGPImgTapMove = new Image( strImgFile.c_str() );
|
|
strImgFile = strPath + L"tapDown";
|
|
m_pGPImgTapHover = new Image( strImgFile.c_str() );
|
|
Gdiplus::RectF gpTapRect(c_xTapPoint, c_yTapPoint, c_wTapPoint, c_hTapPoint );
|
|
m_pGPRgnTapClick = new Region( gpTapRect );
|
|
|
|
m_pTimerTapHint = new TTimer(this);
|
|
m_pTimerTapHint->Enabled = false;
|
|
m_pTimerTapHint->Interval = TIME_HINT;
|
|
m_pTimerTapHint->OnTimer = HintTimerTapProc;
|
|
m_pTapWnd = new TSkinHintWindow(this);
|
|
|
|
Screen->Cursors[crHand0] = LoadCursor(HInstance, L"OpenHand");
|
|
Screen->Cursors[crHand1] = LoadCursor(HInstance, L"CatchHand");
|
|
|
|
//风格浏览初始化
|
|
|
|
m_nStyleNum = 0;
|
|
m_iFirstStyle = 0;
|
|
m_iSelStyle = m_iHintStyle = -1;
|
|
m_iDirection = BROWSE_PAUSE;
|
|
|
|
m_pImgSelStyle = NULL;
|
|
|
|
m_pImgCover = new TPngImage();
|
|
m_pImgCover->LoadFromResourceName(int(HInstance), "DiskCover");
|
|
|
|
m_nCoverWidth = m_pImgCover->Width;
|
|
m_nCoverHeight = m_pImgCover->Height;
|
|
|
|
m_paImgStyles = new PTBitmap[nImgStyleNum];
|
|
|
|
for( int i=0; i< nImgStyleNum; i++ ){
|
|
m_paImgStyles[i] = new TBitmap();
|
|
m_paImgStyles[i]->LoadFromResourceName(int(HInstance), "diskab"+IntToStr(i));
|
|
}
|
|
|
|
m_nDiskWidth = m_paImgStyles[0]->Width;
|
|
m_nDiskHeight = m_paImgStyles[0]->Height;
|
|
m_nTileWidth = m_panBrowse->Width / 4;
|
|
m_xFirstPos = - m_nDiskWidth / 2;
|
|
m_xCoverPos = 0;
|
|
|
|
m_pTimerBrowse = new TTimer(this);
|
|
m_pTimerBrowse->Enabled = false;
|
|
m_pTimerBrowse->Interval = TIME_BROWSE;
|
|
m_pTimerBrowse->OnTimer = BrowseTimerProc;
|
|
|
|
m_pTimerHint = new TTimer(this);
|
|
m_pTimerHint->Enabled = false;
|
|
m_pTimerHint->Interval = TIME_HINT;
|
|
m_pTimerHint->OnTimer = HintTimerProc;
|
|
|
|
m_bDiskOpening = m_bSelectMoving = false;
|
|
m_pStyleInfoWnd = new TSkinHintWindow(this);
|
|
|
|
//test
|
|
|
|
m_iOldSelected = -1;
|
|
// f_SM_GetStyleRecomInfos( g_iMelodyTimeSignature, m_aPreStyleInfos, &m_nStyleNum);
|
|
|
|
SetTransparent( this );
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::FormDestroy(TObject *Sender)
|
|
{
|
|
delete m_pGPImgPointerNormal;
|
|
delete m_pGPImgPointerHover;
|
|
delete m_pGPRgnClick;
|
|
delete m_pGPRgnDrag;
|
|
|
|
if( m_pImgSelStyle )
|
|
delete m_pImgSelStyle;
|
|
|
|
delete m_pImgCover;
|
|
|
|
for( int i=0; i<nImgStyleNum; i++ ){
|
|
if( m_paImgStyles[i] )
|
|
delete m_paImgStyles[i];
|
|
}
|
|
|
|
if( m_paImgStyles )
|
|
delete m_paImgStyles;
|
|
|
|
delete m_pTimerBrowse;
|
|
delete m_pTimerHint;
|
|
delete m_pStyleInfoWnd;
|
|
|
|
SAFE_DELETE(m_pGPImgTapNormal);//add by tj 2013/12/23
|
|
SAFE_DELETE(m_pGPImgTapMove);
|
|
SAFE_DELETE(m_pGPImgTapHover);
|
|
SAFE_DELETE(m_pGPRgnTapClick);
|
|
SAFE_DELETE(m_pTimerTapHint);
|
|
SAFE_DELETE(m_pTapWnd);
|
|
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::FormActivate(TObject *Sender)
|
|
{
|
|
if( Sender ){
|
|
return;
|
|
}
|
|
|
|
//速度指针初始化
|
|
m_bDraging = m_bHover = false;
|
|
m_nTapClicked = TAP_NOR;//add by tj 2013/12/20
|
|
// m_bDraging = m_bHover = false;
|
|
|
|
m_labSpeed->Font->Color = RGB(60,43,23);
|
|
|
|
int tmpAngle = (g_nMelodyTempo-c_iScale0)*9/5;
|
|
if( tmpAngle!=m_nPointerAngle ){
|
|
m_nPointerAngle = tmpAngle;
|
|
// m_labSpeed->Caption = IntToStr( g_nMelodyTempo );
|
|
m_panPointer->Invalidate();
|
|
}
|
|
//add by tj 2013/12/20
|
|
m_labSpeed->Caption = IntToStr( g_nMelodyTempo );
|
|
|
|
int iLastBeat = -1;
|
|
for( int i=0; i<4; i++ ){
|
|
if( m_lstBeat[i]->Down ){
|
|
iLastBeat = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if( iLastBeat!=g_iMelodyTimeSignature ){
|
|
if( iLastBeat>=0 ){
|
|
m_lstBeat[iLastBeat]->Down = false;
|
|
}
|
|
|
|
m_lstBeat[g_iMelodyTimeSignature]->Down = true;
|
|
|
|
f_MM_Stop();
|
|
|
|
m_iSelStyle = -1;
|
|
m_xCoverPos = 0;
|
|
m_bDiskOpening = m_bSelectMoving = false;
|
|
m_pTimerBrowse->Enabled = true;
|
|
m_iOldSelected = -1;
|
|
|
|
m_nStyleNum = 0;
|
|
//节拍变换,重新获取推荐ID
|
|
f_SM_GetStyleRecomInfos( g_iMelodyTimeSignature, m_aPreStyleInfos, &m_nStyleNum);
|
|
}
|
|
|
|
if( m_nStyleNum==0 ){
|
|
f_SM_GetStyleRecomInfos( g_iMelodyTimeSignature, m_aPreStyleInfos, &m_nStyleNum);
|
|
}
|
|
|
|
m_iTS_Bk = g_iMelodyTimeSignature;
|
|
m_nTempo_Bk = g_nMelodyTempo;
|
|
m_idStyle_Bk = g_iSelectedStyleID;
|
|
|
|
HRESULT hResult = f_MM_CreateRealTimeMIDIStream( true );
|
|
if (hResult != S_OK) {
|
|
DebugPrint("Create realtime midi stream error.\n");
|
|
}
|
|
|
|
SetFocus();
|
|
Invalidate();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSetupForm::FormDeactivate(TObject *Sender)
|
|
{
|
|
if( Application->ActiveFormHandle!=Application->MainFormHandle ){
|
|
return;
|
|
}
|
|
|
|
if( m_btnBeatPreview1->Visible ){
|
|
BeatPreviewClick( m_btnBeatPreview1 );
|
|
}
|
|
|
|
f_MM_Stop() ;
|
|
|
|
HRESULT hResult = f_MM_FreeRealTimeMIDIStream();
|
|
if (hResult != S_OK) {
|
|
DebugPrint("Free realtime midi stream error.\n");
|
|
}
|
|
|
|
m_pTimerBrowse->Enabled = false;
|
|
m_pTimerHint->Enabled = false;
|
|
|
|
m_iDirection = BROWSE_PAUSE;
|
|
m_btnBrowseRight->Down = false;
|
|
m_btnBrowseLeft->Down = false;
|
|
|
|
m_bDiskOpening = m_bSelectMoving = false;
|
|
|
|
m_iSelStyle = -1; m_xCoverPos = 0;
|
|
if( m_iHintStyle!=-1 ){
|
|
m_iHintStyle = -1;
|
|
m_pStyleInfoWnd->ReleaseHandle();
|
|
}
|
|
|
|
g_bCanStep = true;
|
|
//速度节拍改变
|
|
if( Sender && (g_nMelodyTempo!=m_nTempo_Bk || g_iMelodyTimeSignature!=m_iTS_Bk) ){
|
|
if( g_lstMelodyBars.size()>0 && ( g_strProjectName.length()==0 ||
|
|
HasProjectModified( m_idStyle_Bk ))){
|
|
String strMsg = "重设";
|
|
if( g_nMelodyTempo!=m_nTempo_Bk ){
|
|
strMsg += "速度";
|
|
if( g_iMelodyTimeSignature!=m_iTS_Bk ){
|
|
strMsg += "和节拍";
|
|
}
|
|
}
|
|
else{
|
|
strMsg += "节拍";
|
|
}
|
|
|
|
strMsg += ",将创建新的工程。\n是否保存当前工程?";
|
|
MessageForm->m_btnYes->Hint = L"保存当前工程并新建工程";
|
|
MessageForm->m_btnNo->Hint = L"放弃当前工程并新建工程";
|
|
MessageForm->m_btnCancel->Hint = L"恢复当前工程设定";
|
|
|
|
int mrRet = MessageForm->ShowMessage( strMsg, MB_ICONQUESTION|MB_YESNOCANCEL );
|
|
|
|
MessageForm->m_btnYes->Hint = "";
|
|
MessageForm->m_btnNo->Hint = "";
|
|
MessageForm->m_btnCancel->Hint = "";
|
|
|
|
if( mrRet==mrYes ){
|
|
int iTS_Reset = g_iMelodyTimeSignature,
|
|
nTempo_Reset = g_nMelodyTempo,
|
|
idStyle_Reset = g_iSelectedStyleID;
|
|
|
|
g_iMelodyTimeSignature = m_iTS_Bk;
|
|
g_nMelodyTempo = m_nTempo_Bk;
|
|
g_iSelectedStyleID = m_idStyle_Bk;
|
|
Application->MainForm->Perform( UM_SAVEPROJECT, 0, 0 );
|
|
|
|
g_iMelodyTimeSignature = iTS_Reset;
|
|
g_nMelodyTempo = nTempo_Reset;
|
|
g_iSelectedStyleID = idStyle_Reset;
|
|
Application->MainForm->Perform( UM_NEWPROJECT, 0, 0 );
|
|
g_bCanStep = false;
|
|
}
|
|
|
|
if( mrRet==mrYes || mrRet==mrNo ){
|
|
Application->MainForm->Perform( UM_NEWPROJECT, 0, 0 );
|
|
g_bCanStep = false;
|
|
}
|
|
else{
|
|
SetMelodyTempo( m_nTempo_Bk );
|
|
SetMelodyTS( m_iTS_Bk );
|
|
g_iSelectedStyleID = m_idStyle_Bk;
|
|
PostMessage(Application->MainFormHandle, UM_REFRESH_PAGE_STATE, PAGE_ALL, 0);
|
|
|
|
}
|
|
}
|
|
else if( g_strProjectName.length()>0 ){
|
|
String strMsg = "重设";
|
|
if( g_nMelodyTempo!=m_nTempo_Bk ){
|
|
strMsg += "速度";
|
|
if( g_iMelodyTimeSignature!=m_iTS_Bk ){
|
|
strMsg += "和节拍";
|
|
}
|
|
}
|
|
else{
|
|
strMsg += "节拍";
|
|
}
|
|
strMsg += ",将创建新的工程。\n是否确定新建工程?";
|
|
int mrRet = MessageForm->ShowMessage( strMsg, MB_ICONQUESTION|MB_OKCANCEL );
|
|
if( mrRet==mrOk ){
|
|
Application->MainForm->Perform( UM_NEWPROJECT, 0, 0 );
|
|
g_bCanStep = false;
|
|
}
|
|
else{
|
|
SetMelodyTempo( m_nTempo_Bk );
|
|
SetMelodyTS( m_iTS_Bk );
|
|
g_iSelectedStyleID = m_idStyle_Bk;
|
|
PostMessage(Application->MainFormHandle, UM_REFRESH_PAGE_STATE, PAGE_ALL, 0);
|
|
|
|
}
|
|
}
|
|
}
|
|
else if( Sender && g_iSelectedStyleID!=m_idStyle_Bk ){
|
|
g_bBaseComposeLoaded = false;
|
|
g_bComposeLoaded = false;
|
|
|
|
}
|
|
//如果没进行过播放操作,产生随机风格ID
|
|
if( g_iSelectedStyleID == -1 ){
|
|
SetDefaultStyle();
|
|
}
|
|
//备份得到的风格ID
|
|
m_idStyle_Bk = g_iSelectedStyleID;
|
|
//设置音频节拍
|
|
f_MM_SetTimeSignature( g_iMelodyTimeSignature );
|
|
//显示下一页
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
//add by tj 2013/12/20
|
|
|
|
void __fastcall TSetupForm::BeatClick(TObject *Sender)
|
|
{
|
|
TPNGButton * pButton = (TPNGButton*)Sender;
|
|
|
|
if( m_lstBeat[g_iMelodyTimeSignature]!=pButton ){
|
|
f_MM_Stop();
|
|
|
|
m_lstBeat[g_iMelodyTimeSignature]->Down = false;
|
|
pButton->Down = true ;
|
|
SetMelodyTS( pButton->Tag );
|
|
|
|
if( m_btnBeatPreview1->Visible ){
|
|
f_MM_Play( Handle, 0, TYPE_BEAT );
|
|
}
|
|
|
|
g_lstStyleSelected.clear();//节拍变换,清除风格类型列表
|
|
g_iSelectedStyleID=-1; //重置已选的风格ID
|
|
m_iSelStyle = -1;
|
|
m_xCoverPos = 0;
|
|
m_bDiskOpening = m_bSelectMoving = false;
|
|
m_pTimerBrowse->Enabled = true;
|
|
m_iOldSelected = -1;
|
|
m_xFirstPos = - m_nDiskWidth / 2;
|
|
m_iFirstStyle = 0;
|
|
//节拍变换,重新获取推荐ID
|
|
f_SM_GetStyleRecomInfos( g_iMelodyTimeSignature, m_aPreStyleInfos, &m_nStyleNum );
|
|
//
|
|
if( g_iMelodyTimeSignature != m_iTS_Bk)
|
|
PostMessage(Application->MainFormHandle, UM_REFRESH_PAGE_STATE, PAGE_SETUPRECORD, 0);
|
|
else
|
|
PostMessage(Application->MainFormHandle, UM_REFRESH_PAGE_STATE, PAGE_ALL, 0);
|
|
}
|
|
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::PointerPanPaint(TObject *Sender)
|
|
{
|
|
//以指定的 pt 为中心, 转动Angle角度
|
|
Gdiplus::PointF pointOrg( c_rPoint, c_rPoint );
|
|
Matrix gpMatrix;
|
|
gpMatrix.RotateAt( m_nPointerAngle, pointOrg );
|
|
Gdiplus::Graphics gpGraphic( m_panPointer->Canvas->Handle );
|
|
Gdiplus::Graphics gpGraphicTab(m_panPointer->Canvas->Handle); //add by tj 2013/12/20
|
|
gpGraphic.SetTransform( &gpMatrix ); //旋转画布
|
|
|
|
Gdiplus::RectF gpPointRect(c_xDrag, c_yDrag, c_wDrag, c_hDrag );
|
|
|
|
m_pGPRgnDrag->MakeEmpty();
|
|
m_pGPRgnDrag->Complement( gpPointRect );
|
|
m_pGPRgnDrag->Transform( &gpMatrix );
|
|
|
|
//旋转前图片在canvas中的位置
|
|
Gdiplus::RectF rectPoint( c_xPoint, c_yPoint, c_wPoint, c_hPoint );
|
|
if( m_bHover )
|
|
gpGraphic.DrawImage( m_pGPImgPointerHover, rectPoint );
|
|
else
|
|
gpGraphic.DrawImage( m_pGPImgPointerNormal, rectPoint );
|
|
|
|
gpGraphic.ResetTransform();
|
|
|
|
//add by tj 2013/12/20
|
|
Gdiplus::RectF rectPointTap( c_xTapPoint, c_yTapPoint, c_wTapPoint, c_hTapPoint );
|
|
if( m_nTapClicked==TAP_NOR )
|
|
gpGraphicTab.DrawImage( m_pGPImgTapNormal, rectPointTap );
|
|
else if( m_nTapClicked==TAP_FOCUS )
|
|
gpGraphicTab.DrawImage( m_pGPImgTapMove, rectPointTap );
|
|
else
|
|
gpGraphicTab.DrawImage( m_pGPImgTapHover, rectPointTap );
|
|
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::PointerPanMouseDown(TObject *Sender, TMouseButton Button,
|
|
TShiftState Shift, int X, int Y)
|
|
{
|
|
if( Button!=mbLeft )
|
|
return;
|
|
|
|
if( Sender==m_panPointer ) {
|
|
if( m_pGPRgnDrag->IsVisible(X, Y) ) {
|
|
Screen->Cursor = crHand1;
|
|
m_bDraging = true;
|
|
m_bHover = false;
|
|
|
|
m_panPointer->Invalidate();
|
|
}else if(m_pGPRgnTapClick->IsVisible(X,Y)){ //add by tj 2013/12/20
|
|
|
|
m_nTapClicked = TAP_DOWN;
|
|
|
|
HRESULT hRet = f_MM_RealTimeMIDINoteOn( 42 ); //36
|
|
|
|
static int nDownNums = 0;
|
|
static DWORD timeIni = 0;
|
|
static DWORD timeSAverage = 0;
|
|
DWORD timeCur = timeGetTime();
|
|
static DWORD timePre = timeCur;
|
|
DWORD nCalTime;
|
|
|
|
bool bTempo200 = (timeCur-timePre) < (60000/200)?(timeCur-timePre!=0?1:0):0;
|
|
//如果距离上次时间
|
|
//大于 一拍最慢速度所需时间
|
|
//重置 nDownNums和初始时间
|
|
if( timeCur-timePre > 60000/50 ) {
|
|
nDownNums = 0;
|
|
timeIni = 0;
|
|
}
|
|
nDownNums++;
|
|
|
|
if( nDownNums<=3 ) {
|
|
if( bTempo200 )
|
|
nDownNums--;
|
|
else if(nDownNums != 1)
|
|
timeIni += timeCur - timePre;
|
|
}
|
|
|
|
if( nDownNums>=3 && !bTempo200){
|
|
|
|
if(nDownNums==3){
|
|
nCalTime = timeSAverage = timeIni/2;
|
|
}else{ //平滑处理
|
|
nCalTime = timeCur - timePre;
|
|
nCalTime = (nCalTime + timeSAverage*3)/4;
|
|
timeSAverage = nCalTime;
|
|
}
|
|
|
|
int nTempo;
|
|
if(nCalTime)
|
|
nTempo = 60000/nCalTime;
|
|
if( nTempo>=50 && nTempo<=200 ){
|
|
m_labSpeed->Caption = IntToStr( nTempo );
|
|
|
|
int tmpAngle = (nTempo - c_iScale0) * 270.0 / 150.0 +0.5;
|
|
if( tmpAngle!=m_nPointerAngle )
|
|
m_nPointerAngle = tmpAngle;
|
|
}
|
|
}
|
|
|
|
timePre = timeCur;
|
|
m_panPointer->Invalidate();
|
|
}else{
|
|
X += m_panPointer->Left;
|
|
Y += m_panPointer->Top;
|
|
PointerPanMouseDown( m_imgBk, Button, Shift, X, Y );
|
|
}
|
|
}
|
|
else if( Sender==m_imgBk && m_pGPRgnClick->IsVisible(X, Y)){
|
|
MovePointer( X-c_xOriScr, Y-c_yOriScr );
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::PointerPanMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
|
|
int X, int Y)
|
|
{
|
|
// if(m_pPlayData){
|
|
int nTempo = StrToInt(m_labSpeed->Caption);
|
|
SetMelodyTempo( nTempo );
|
|
// }
|
|
|
|
if( Button!=mbLeft )
|
|
return;
|
|
|
|
if( m_bDraging ){
|
|
Screen->Cursor = crDefault;
|
|
m_bDraging = false;
|
|
|
|
if( m_pGPRgnDrag->IsVisible(X, Y) ){
|
|
m_bHover = true;
|
|
m_panPointer->Invalidate();
|
|
}
|
|
}else if(m_nTapClicked) {
|
|
if( m_pGPRgnTapClick->IsVisible(X, Y) )
|
|
m_nTapClicked = TAP_FOCUS;
|
|
else
|
|
m_nTapClicked = TAP_NOR;
|
|
|
|
m_panPointer->Invalidate();
|
|
}
|
|
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::PointerPanMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
|
|
{
|
|
static bool bTapHint = false; //提示tap //add by tj 2013/12/23
|
|
|
|
if( m_pGPRgnDrag->IsVisible(X, Y) ){
|
|
if( Screen->Cursor==crDefault )
|
|
Screen->Cursor = crHand0;
|
|
|
|
if( m_bDraging ){
|
|
MovePointer( X-c_rPoint, Y-c_rPoint );
|
|
}
|
|
else if( !m_bHover ){
|
|
m_bHover = true;
|
|
m_panPointer->Invalidate();
|
|
}
|
|
|
|
m_pTapWnd->ReleaseHandle(); //add by tj 2013/12/23
|
|
bTapHint = false;
|
|
m_pTimerTapHint->Enabled = false;
|
|
}else{
|
|
|
|
if( m_bHover ){
|
|
Screen->Cursor = crDefault;
|
|
|
|
m_bHover = false;
|
|
m_panPointer->Invalidate();
|
|
}
|
|
|
|
//提示tap //add by tj 2013/12/23
|
|
if(!m_pGPRgnTapClick->IsVisible(X, Y)){
|
|
m_pTapWnd->ReleaseHandle();
|
|
bTapHint = false;
|
|
m_pTimerTapHint->Enabled = false;
|
|
if( m_nTapClicked!=TAP_DOWN )
|
|
m_nTapClicked = TAP_NOR;
|
|
m_panPointer->Invalidate();
|
|
}
|
|
else if(m_pGPRgnTapClick->IsVisible(X, Y) && !bTapHint){
|
|
m_pTimerTapHint->Enabled = true;
|
|
bTapHint = true;
|
|
|
|
if(m_nTapClicked!=TAP_FOCUS)
|
|
m_nTapClicked = TAP_FOCUS;
|
|
m_panPointer->Invalidate();
|
|
}
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::PointerPanMouseLeave(TObject *Sender)
|
|
{
|
|
Screen->Cursor = crDefault;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void TSetupForm::MovePointer( int deltaX, int deltaY )
|
|
{
|
|
double ratio = deltaX/Sqrt(Power(deltaX, (double)2)+Power(deltaY, (double)2));
|
|
int tmpAngle = int(ArcSin( ratio ) * 180 / M_PI + 0.5);
|
|
|
|
if( deltaY>0 )
|
|
tmpAngle = 180 - tmpAngle;
|
|
if( tmpAngle>180 )
|
|
tmpAngle = tmpAngle - 360;
|
|
|
|
if( tmpAngle!=m_nPointerAngle && tmpAngle>=-135 && tmpAngle<=135 ){
|
|
m_nPointerAngle = tmpAngle;
|
|
m_panPointer->Invalidate();
|
|
|
|
|
|
int nTempo = c_iScale0 + tmpAngle * 150 / 270;
|
|
m_labSpeed->Caption = IntToStr(nTempo);
|
|
SetMelodyTempo( nTempo );
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::SpeedMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
|
|
{
|
|
int scale = StrToInt( m_labSpeed->Caption );
|
|
|
|
if( Sender==m_btnSpeedUp )
|
|
scale++;
|
|
else
|
|
scale--;
|
|
|
|
if( scale<=200 && scale>=50 ){
|
|
int tmpAngle = (scale - c_iScale0) * 270.0 / 150.0 +0.5;
|
|
|
|
if( tmpAngle!=m_nPointerAngle ){
|
|
m_nPointerAngle = tmpAngle;
|
|
m_panPointer->Invalidate();
|
|
}
|
|
|
|
m_labSpeed->Caption = IntToStr(scale);
|
|
|
|
//int nTempo = StrToInt(m_labSpeed->Caption);
|
|
SetMelodyTempo( scale );
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::StepClick(TObject *Sender)
|
|
{
|
|
PostMessage(Application->MainFormHandle, UM_JUMP_PAGE, WPARAM(1),LPARAM(this));
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void TSetupForm::SetDefaultStyle(int iTS)
|
|
{
|
|
if( m_nStyleNum==0 ){
|
|
f_SM_GetStyleRecomInfos( g_iMelodyTimeSignature, m_aPreStyleInfos, &m_nStyleNum );
|
|
}
|
|
else if( iTS!=g_iMelodyTimeSignature ){
|
|
m_nStyleNum = 0;
|
|
f_SM_GetStyleRecomInfos( iTS, m_aPreStyleInfos, &m_nStyleNum );
|
|
}
|
|
|
|
if( m_nStyleNum>0 ){
|
|
srand((unsigned)time(NULL));
|
|
int n = rand()%m_nStyleNum;
|
|
g_iSelectedStyleID = m_aPreStyleInfos[n].idStyle;
|
|
|
|
g_strSelectedStyleName = UTF8ToMBCS( m_aPreStyleInfos[n].detail.strStyleName );
|
|
for( int i=0; i<sizeof(m_aPreStyleInfos[n].detail.type); i++ ){
|
|
if( m_aPreStyleInfos[n].detail.type[i]>=0 ){
|
|
g_lstStyleSelected.push_back(m_aPreStyleInfos[n].detail.type[i]) ;
|
|
g_iSelectedStyleType = 1<< m_aPreStyleInfos[n].detail.type[i];
|
|
}
|
|
}
|
|
}
|
|
else{
|
|
DebugPrint("获取推荐风格失败");
|
|
}
|
|
|
|
g_iSelectedStyleID_SVD = g_iSelectedStyleID;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::BrowsePaint(TObject *Sender)
|
|
{
|
|
if( m_nStyleNum>0 ){
|
|
if( m_xFirstPos<0 && m_xFirstPos<=-m_nDiskWidth ){
|
|
m_xFirstPos += m_nTileWidth;
|
|
m_iFirstStyle = (m_iFirstStyle+1) % m_nStyleNum;
|
|
}
|
|
else if( m_xFirstPos>0 && m_xFirstPos>m_nTileWidth-m_nDiskWidth ){
|
|
m_xFirstPos -= m_nTileWidth;
|
|
m_iFirstStyle = (m_iFirstStyle-1+m_nStyleNum) % m_nStyleNum;
|
|
}
|
|
|
|
int x = m_xFirstPos, i = m_iFirstStyle,iFontClr;
|
|
|
|
m_panBrowse->Canvas->Brush->Style=bsClear;
|
|
// m_panBrowse->Canvas->Font->Size = sFont7;
|
|
|
|
while( x<m_panBrowse->Width ){
|
|
if( m_iSelStyle==i && !m_bSelectMoving ){
|
|
m_panBrowse->Canvas->Draw(x, 0, m_pImgSelStyle);
|
|
//无盖子上显示字体,有渐渐打开的效果
|
|
m_panBrowse->Canvas->Font->Color = clWhite;
|
|
m_panBrowse->Canvas->TextOutW(78+x,114,"NO."+IntToStr(i+1));
|
|
m_panBrowse->Canvas->Draw(x+m_xCoverPos, 0, m_pImgCover);
|
|
}
|
|
else{
|
|
int ind = m_aPreStyleInfos[i].detail.type[0];
|
|
if( ind>=nImgStyleNum )
|
|
ind = nImgStyleNum-1;
|
|
|
|
m_panBrowse->Canvas->Draw(x, 0, m_paImgStyles[ind]);
|
|
//有盖子顶部显示透明后颜色的字体,
|
|
m_panBrowse->Canvas->Font->Color = 0x00D1D7DA;
|
|
m_panBrowse->Canvas->TextOutW(78+x,114,"NO."+IntToStr(i+1));
|
|
}
|
|
|
|
x += m_nTileWidth;
|
|
i = (i+1) % m_nStyleNum;
|
|
}
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::BrowseMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
|
|
{
|
|
if( m_nStyleNum<=0 )
|
|
return;
|
|
|
|
//停止移动
|
|
int xPos = m_xFirstPos, iStyle = m_iFirstStyle, iSelect = -1;
|
|
TRect rectHit( 0, 0, m_nCoverWidth, m_nDiskHeight );
|
|
while( xPos<m_panBrowse->Width ){
|
|
rectHit.left = xPos;
|
|
rectHit.right = rectHit.left+m_nCoverWidth;
|
|
if( rectHit.PtInRect( TPoint(X, Y )) ){
|
|
iSelect = iStyle;
|
|
break;
|
|
}
|
|
|
|
xPos += m_nTileWidth;
|
|
iStyle = (iStyle+1) % m_nStyleNum;
|
|
}
|
|
|
|
if( iSelect!=-1 && m_iSelStyle!=iSelect ){
|
|
if( m_btnBeatPreview1->Visible ){
|
|
BeatPreviewClick( m_btnBeatPreview1 );
|
|
}
|
|
|
|
if( m_iHintStyle!=-1 ){
|
|
m_iHintStyle = -1;
|
|
m_pStyleInfoWnd->ReleaseHandle();
|
|
}
|
|
|
|
m_iSelStyle = iSelect;
|
|
|
|
//得到选择的风格ID
|
|
g_iSelectedStyleID = m_aPreStyleInfos[iSelect].idStyle;
|
|
//提取风格名称
|
|
g_strSelectedStyleName = UTF8ToMBCS( m_aPreStyleInfos[iSelect].detail.strStyleName );
|
|
|
|
//添加选择的风格类型
|
|
g_lstStyleSelected.clear();
|
|
g_iSelectedStyleType = 0;
|
|
|
|
for( int i=0; i<sizeof(m_aPreStyleInfos[iSelect].detail.type); i++ ){
|
|
int iType = m_aPreStyleInfos[iSelect].detail.type[i];
|
|
if( iType<0 )
|
|
break;
|
|
else if( iType>=nImgStyleNum )
|
|
iType = nImgStyleNum-1;
|
|
|
|
|
|
g_iSelectedStyleType |= 1<< iType;
|
|
}
|
|
for( int j=0; j<32; j++ ){
|
|
if( g_iSelectedStyleType & (1<<j) )
|
|
g_lstStyleSelected.push_back(j);
|
|
}
|
|
|
|
if( m_pImgSelStyle!=NULL )
|
|
delete m_pImgSelStyle;
|
|
|
|
m_pImgSelStyle = new TBitmap();
|
|
|
|
int iImg = m_aPreStyleInfos[iSelect].detail.type[0];
|
|
if( iImg>=nImgStyleNum ){
|
|
iImg = nImgStyleNum - 1;
|
|
}
|
|
|
|
String strImgName = L"diskb"+IntToStr( iImg );
|
|
m_pImgSelStyle->LoadFromResourceName(int(HInstance), strImgName);
|
|
|
|
int iSelectPos = (iSelect-m_iFirstStyle+m_nStyleNum) % m_nStyleNum;
|
|
if( iSelectPos<2 || (iSelectPos==2 && m_xFirstPos<-m_nDiskWidth/2 )){
|
|
m_iDirection = BROWSE_RIGHT;
|
|
}
|
|
else if( iSelectPos>2 || (iSelectPos==2 && m_xFirstPos>-m_nDiskWidth/2 )){
|
|
m_iDirection = BROWSE_LEFT;
|
|
}
|
|
|
|
m_xCoverPos = 0;
|
|
|
|
m_btnBrowseLeft->Down = false;
|
|
m_btnBrowseRight->Down = false;
|
|
|
|
m_bDiskOpening = false;
|
|
m_bSelectMoving = true;
|
|
m_pTimerBrowse->Enabled = true;
|
|
|
|
if( g_lstMelodyBars.empty() && m_aPreStyleInfos[iSelect].detail.iTempo!=g_nMelodyTempo ){
|
|
int iTempo = m_aPreStyleInfos[iSelect].detail.iTempo;
|
|
|
|
if( iTempo>200 )
|
|
iTempo = 200;
|
|
else if( iTempo<50 )
|
|
iTempo = 50;
|
|
|
|
int tmpAngle = (iTempo - c_iScale0) * 270.0 / 150.0 +0.5;
|
|
|
|
if( tmpAngle!=m_nPointerAngle ){
|
|
m_nPointerAngle = tmpAngle;
|
|
m_panPointer->Invalidate();
|
|
}
|
|
|
|
m_labSpeed->Caption = IntToStr(iTempo);
|
|
|
|
SetMelodyTempo( iTempo );
|
|
}
|
|
}
|
|
|
|
//从头播放或者停止播放
|
|
/* if(m_pPlayData) {
|
|
if(m_iSelStyle==m_iOldSelected) {
|
|
f_MM_PlayStyleDemo(m_pPlayData,m_nPlayData, 0);
|
|
}
|
|
else {
|
|
m_iOldSelected = m_iSelStyle;
|
|
f_MM_StopStyleDemo();
|
|
delete m_pPlayData;
|
|
m_pPlayData = NULL;
|
|
m_nPlayData = 0;
|
|
}
|
|
}
|
|
else{
|
|
m_iOldSelected = m_iSelStyle;
|
|
}
|
|
*/
|
|
if( m_iSelStyle!=m_iOldSelected) {
|
|
f_MM_Stop();
|
|
m_iOldSelected = m_iSelStyle;
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::BrowseMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
|
|
{
|
|
//开盒时不显示信息
|
|
if( m_bDiskOpening || m_bSelectMoving || m_nStyleNum<=0 )
|
|
return;
|
|
|
|
//停止移动
|
|
int xPos = m_xFirstPos, iStyle = m_iFirstStyle, iSelect = -1;
|
|
TRect rectHit( 0, 0, m_nCoverWidth, m_nDiskHeight );
|
|
while( xPos<m_panBrowse->Width ){
|
|
rectHit.left = xPos;
|
|
rectHit.right = rectHit.left+m_nCoverWidth;
|
|
if( rectHit.PtInRect( TPoint(X, Y )) ){
|
|
iSelect = iStyle;
|
|
break;
|
|
}
|
|
|
|
xPos += m_nTileWidth;
|
|
iStyle = (iStyle+1) % m_nStyleNum;
|
|
}
|
|
|
|
if( iSelect!=-1 ){
|
|
if( iSelect!=m_iHintStyle ){
|
|
m_pTimerHint->Enabled = true;
|
|
m_iHintStyle = iSelect;
|
|
//鼠标停留显示
|
|
//HRESULT ret = f_MF_GetStyleInfo(m_aPreStyleIDs[m_iHintStyle][2],&m_tOnShowHit);
|
|
m_pTimerBrowse->Enabled = false;
|
|
}
|
|
}
|
|
else{
|
|
if( m_iHintStyle!=-1 ){
|
|
m_iHintStyle = -1;
|
|
m_pStyleInfoWnd->ReleaseHandle();
|
|
}
|
|
|
|
if( m_iDirection!=BROWSE_PAUSE ){
|
|
m_pTimerBrowse->Enabled = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::BrowseMouseLeave(TObject *Sender)
|
|
{
|
|
if( m_iHintStyle!=-1 ){
|
|
m_iHintStyle = -1;
|
|
m_pStyleInfoWnd->ReleaseHandle();
|
|
}
|
|
|
|
if( m_iDirection!=BROWSE_PAUSE ){
|
|
m_pTimerBrowse->Enabled = true;
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::BrowseTimerProc(TObject* Sender)
|
|
{
|
|
if( m_bDiskOpening ){
|
|
if( m_xCoverPos <= 17-m_nDiskWidth ){
|
|
m_pTimerBrowse->Enabled = false;
|
|
m_bDiskOpening = false;
|
|
|
|
PlayMidiStyle();
|
|
|
|
return;
|
|
}
|
|
|
|
m_xCoverPos -= BROWSE_SPEED*2;
|
|
}
|
|
else if( m_bSelectMoving ){
|
|
if( m_iFirstStyle==(m_iSelStyle-2+m_nStyleNum)%m_nStyleNum &&
|
|
m_xFirstPos<(-m_nDiskWidth/2+BROWSE_SPEED*10) &&
|
|
m_xFirstPos>(-m_nDiskWidth/2-BROWSE_SPEED*10) ){
|
|
m_xFirstPos = -m_nDiskWidth/2;
|
|
m_iDirection = BROWSE_PAUSE;
|
|
m_bSelectMoving = false;
|
|
m_bDiskOpening = true;
|
|
m_panBrowse->Invalidate();
|
|
|
|
return;
|
|
}
|
|
else{
|
|
m_xFirstPos += m_iDirection * BROWSE_SPEED*10;
|
|
}
|
|
}
|
|
else{
|
|
m_xFirstPos += m_iDirection *BROWSE_SPEED*(s_iSpeedDownTimes==1?1:s_iBrowseStep*s_iSpeedDownTimes);
|
|
}
|
|
|
|
m_panBrowse->Invalidate();
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSetupForm::HintTimerProc(TObject* Sender)
|
|
{
|
|
m_pTimerHint->Enabled = false;
|
|
|
|
if( m_iHintStyle==-1 )
|
|
return;
|
|
|
|
int xPos = m_xFirstPos+(m_iHintStyle-m_iFirstStyle + m_nStyleNum)%m_nStyleNum*m_nTileWidth;
|
|
if( xPos<=0 ) xPos = 0;
|
|
TPoint point( xPos, m_panBrowse->Height + 4);
|
|
point = m_panBrowse->ClientToScreen( point );
|
|
|
|
String strHint = "风格名称:";
|
|
// strHint+=m_tOnShowHit.chName;
|
|
strHint += UTF8ToMBCS(m_aPreStyleInfos[m_iHintStyle].detail.strStyleName).c_str();
|
|
// strHint += "("+IntToStr(m_iHintStyle)+")";
|
|
strHint+="\n作 者:";
|
|
// strHint+=m_tOnShowHit.chAuthor;
|
|
strHint += UTF8ToMBCS( m_aPreStyleInfos[m_iHintStyle].detail.strAuthor ).c_str();
|
|
strHint+="\n原 速:";
|
|
// strHint+= IntToStr(m_tOnShowHit.nSpeed);
|
|
strHint+= IntToStr( m_aPreStyleInfos[m_iHintStyle].detail.iTempo );
|
|
strHint+="\n简 介:";
|
|
// strHint+=m_tOnShowHit.chDescription;
|
|
strHint += UTF8ToMBCS( m_aPreStyleInfos[m_iHintStyle].detail.strDescription ).c_str();
|
|
|
|
m_pStyleInfoWnd->ShowHintWindow(point, strHint);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void TSetupForm::PlayMidiStyle()
|
|
{
|
|
int nSize = 1000000;
|
|
BYTE* pData = new BYTE[1000000];
|
|
int ret = f_SM_GetStyleDemo( nSize, pData, m_aPreStyleInfos[m_iSelStyle].idStyle,
|
|
-1, -1, -1, -1 );
|
|
f_MM_PlayStyleDemo( pData, nSize, g_nMelodyTempo);
|
|
|
|
delete[] pData;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSetupForm::BtnBrowseMouseDown(TObject *Sender, TMouseButton Button,
|
|
TShiftState Shift, int X, int Y)
|
|
{
|
|
if( m_iSelStyle!=-1 )
|
|
f_MM_Stop();
|
|
|
|
//设置按下状态
|
|
((TPNGButton*)Sender)->SetDown(true);
|
|
|
|
if( Sender==m_btnBrowseLeft ){
|
|
m_btnBrowseRight->SetDown(false);
|
|
m_iDirection = BROWSE_LEFT;
|
|
|
|
if(!s_bLeft)
|
|
s_iSpeedDownTimes = 0;
|
|
s_bLeft = true;
|
|
s_bRight = false;
|
|
}
|
|
else{
|
|
m_btnBrowseLeft->SetDown(false);
|
|
m_iDirection = BROWSE_RIGHT;
|
|
|
|
if(!s_bRight)
|
|
s_iSpeedDownTimes = 0;
|
|
s_bLeft = false;
|
|
s_bRight = true;
|
|
}
|
|
//左、右键分别为加速、减速
|
|
if(Button==mbLeft)
|
|
s_iSpeedDownTimes++;
|
|
else
|
|
s_iSpeedDownTimes--;
|
|
//超过最大次数回到初值
|
|
if(s_iSpeedDownTimes>s_iMaxTimes)
|
|
s_iSpeedDownTimes = s_iMaxTimes;
|
|
else if(s_iSpeedDownTimes<1)
|
|
s_iSpeedDownTimes = 1;
|
|
|
|
|
|
m_iSelStyle = -1;
|
|
m_xCoverPos = 0;
|
|
|
|
if( m_iHintStyle!=-1 ){
|
|
m_iHintStyle = -1;
|
|
m_pStyleInfoWnd->ReleaseHandle();
|
|
}
|
|
|
|
m_bDiskOpening = m_bSelectMoving = false;
|
|
|
|
m_pTimerBrowse->Enabled = true;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSetupForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
|
|
{
|
|
switch( Key ){
|
|
case VK_F9:
|
|
if( m_btnNextStep->Enabled ){
|
|
StepClick( m_btnNextStep );
|
|
}
|
|
break;
|
|
case VK_SPACE: //add by tj 2013/12/20
|
|
PointerPanMouseDown( m_panPointer, mbLeft, TShiftState(NULL), c_rPoint, c_rPoint );
|
|
break;
|
|
default:
|
|
Application->MainForm->OnKeyDown( Sender, Key, Shift );
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSetupForm::BeatPreviewClick(TObject *Sender)
|
|
{
|
|
if( Sender==m_btnBeatPreview0 ){
|
|
m_btnBeatPreview0->Hide();
|
|
m_btnBeatPreview1->Show();
|
|
f_MM_Stop();
|
|
|
|
m_iSelStyle = -1;
|
|
m_xCoverPos = 0;
|
|
m_bDiskOpening = m_bSelectMoving = false;
|
|
m_pTimerBrowse->Enabled = true;
|
|
f_MM_Play( Handle, 0, TYPE_BEAT );
|
|
}
|
|
else{
|
|
m_btnBeatPreview0->Show();
|
|
m_btnBeatPreview1->Hide();
|
|
f_MM_Stop();
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
/*
|
|
void TSetupForm::CleanData()
|
|
{
|
|
f_MM_Stop();
|
|
|
|
if (m_btnBeatPreview1->Visible) {
|
|
BeatPreviewClick(m_btnBeatPreview1);
|
|
}
|
|
m_pTimerBrowse->Enabled = false;
|
|
m_pTimerHint->Enabled = false;
|
|
|
|
m_iDirection = BROWSE_PAUSE;
|
|
m_btnBrowseRight->Down = false;
|
|
m_btnBrowseLeft->Down = false;
|
|
|
|
m_bDiskOpening = m_bSelectMoving = false;
|
|
|
|
m_iSelStyle = -1;
|
|
m_xCoverPos = 0;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
*/
|
|
|
|
bool TSetupForm::IsModifySetInfo() {
|
|
StepClick(NULL);
|
|
return true;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSetupForm::HintTimerTapProc(TObject* Sender)
|
|
{
|
|
m_pTimerTapHint->Enabled = false;
|
|
|
|
TPoint point( m_panPointer->Width/2, m_panPointer->Height/2+c_hTapPoint/2);
|
|
point = m_panPointer->ClientToScreen( point );
|
|
|
|
String strHint = "Tap: 设置速度\n连续点击鼠标或空格键";
|
|
|
|
m_pTapWnd->ShowHintWindow(point, strHint);
|
|
}
|
|
//----------------------------------------------------------
|
|
//add by tj 2013/12/20
|
|
void __fastcall TSetupForm::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
|
|
|
|
{
|
|
switch( Key ){
|
|
case VK_SPACE: //add by tj 2013/12/20
|
|
PointerPanMouseUp(NULL, mbLeft, TShiftState(NULL),0 ,0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSetupForm::UMSetFontPosition(TMessage &msg)
|
|
{
|
|
if( g_btnFontChange && g_panelFontName && g_lbFontSelect ){
|
|
g_btnFontChange->Parent = this;
|
|
g_panelFontName->Parent = this;
|
|
g_lbFontSelect->Parent = this;
|
|
|
|
g_btnFontChange->Top = 460;//m_btnVolAudioSet->Top;
|
|
g_panelFontName->Top = g_btnFontChange->Top + 1;
|
|
g_lbFontSelect->Top = g_panelFontName->Top - g_lbFontSelect->Height;
|
|
|
|
g_btnFontChange->Left = 45;//m_panelStyleName->Left + m_panelStyleName->Width + 20;
|
|
g_panelFontName->Left = g_btnFontChange->Left + g_btnFontChange->Width;
|
|
g_lbFontSelect->Left = g_panelFontName->Left;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSetupForm::UMHidePopControl(TMessage &msg)
|
|
{
|
|
if( g_lbFontSelect->Visible ){
|
|
g_lbFontSelect->Hide();
|
|
g_btnFontChange->Down = false;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|