226 lines
6.2 KiB
C++
226 lines
6.2 KiB
C++
//---------------------------------------------------------------------------
|
|
#include <vcl.h>
|
|
#include "SaveFormUnit.h"
|
|
#pragma hdrstop
|
|
|
|
#include "GlobalUnit.h"
|
|
//---------------------------------------------------------------------------
|
|
#pragma package(smart_init)
|
|
#pragma link "PNGButton"
|
|
#pragma resource "*.dfm"
|
|
TSaveForm *SaveForm;
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
__fastcall TSaveForm::TSaveForm(TComponent* Owner, String strDefaultFile,
|
|
int iLastOption, int iLastType)
|
|
: TForm(Owner)
|
|
{
|
|
m_editFileName->Text = strDefaultFile;
|
|
m_imgComposeCheck->Tag = (bool)(iLastOption & 2);
|
|
m_imgSongCheck->Tag = (bool)(iLastOption & 1);
|
|
|
|
if( g_bPredefine && m_imgComposeCheck->Tag==0 && m_imgSongCheck->Tag==1 ){
|
|
m_imgSongCheck->Tag = 0;
|
|
}
|
|
|
|
m_iSaveType = iLastType;
|
|
|
|
SetTransparent( this );
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TSaveForm::WMNCHitTest(TWMNCHitTest &Msg)
|
|
{
|
|
TForm::Dispatch(&Msg);
|
|
|
|
if( Msg.Result==HTCLIENT && Msg.YPos<Top+24 )
|
|
Msg.Result = HTCAPTION;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveForm::ImgCheckClick(TObject *Sender)
|
|
{
|
|
if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){
|
|
return;
|
|
}
|
|
|
|
TImage* pImg = (TImage*)Sender;
|
|
|
|
if( !g_bPredefine || pImg==m_imgComposeCheck || m_imgComposeCheck->Tag==1 ){
|
|
pImg->Tag = !pImg->Tag;
|
|
pImg->Picture->Bitmap->Assign(m_pImgCheckState[pImg->Tag]);
|
|
pImg->Invalidate();
|
|
}
|
|
|
|
if( g_bPredefine && pImg==m_imgComposeCheck && pImg->Tag==0 && m_imgSongCheck->Tag==1 ){
|
|
m_imgSongCheck->Tag = 0;
|
|
m_imgSongCheck->Picture->Bitmap->Assign(m_pImgCheckState[0]);
|
|
m_imgSongCheck->Invalidate();
|
|
}
|
|
|
|
if( ( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 ||
|
|
ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ) &&
|
|
( m_imgComposeCheck->Tag==1 || m_imgSongCheck->Tag==1 ) ){
|
|
m_btnOk->Enabled = true;
|
|
}
|
|
else{
|
|
m_btnOk->Enabled = false;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveForm::FormCreate(TObject *Sender)
|
|
{
|
|
m_lblCaption->Font->Color = RGB(60,43,23);
|
|
|
|
m_pImgCheckState[0] = new TBitmap();
|
|
m_pImgCheckState[0]->LoadFromResourceName(int(HInstance), L"BmpUnchecked");
|
|
m_pImgCheckState[1] = new TBitmap();
|
|
m_pImgCheckState[1]->LoadFromResourceName(int(HInstance), L"BmpChecked");
|
|
|
|
//绘制圆角窗体
|
|
HRGN hRgn = CreateRoundRectRgn( 0, 0, Width+1, Height+1, 16, 16 );
|
|
SetWindowRgn( Handle, hRgn, false );
|
|
DeleteObject( hRgn );
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveForm::FormDestroy(TObject *Sender)
|
|
{
|
|
for( int i=0; i<2; i++ ){
|
|
if( m_pImgCheckState[i] )
|
|
delete m_pImgCheckState[i];
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveForm::BtnBrowseClick(TObject *Sender)
|
|
{
|
|
TSaveDialog * pDlg = new TSaveDialog(NULL);
|
|
pDlg->Options << ofCreatePrompt << ofOverwritePrompt;
|
|
pDlg->Title = L"保存为";
|
|
pDlg->FileName = ExtractFileName( m_editFileName->Text );
|
|
pDlg->InitialDir = ExtractFilePath( m_editFileName->Text );
|
|
|
|
#ifdef _PROFESSIONAL
|
|
pDlg->Filter = "mp3文件 (*.mp3)|*.MP3|Wave文件 (*.wav)|*.WAV|midi文件 (*.mid)|*.MID";
|
|
#else
|
|
pDlg->Filter = "mp3文件 (*.mp3)|*.MP3|Wave文件 (*.wav)|*.WAV";
|
|
#endif
|
|
|
|
if( ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ){
|
|
m_iSaveType = FILETYPE_MP3;
|
|
}
|
|
else if( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 ){
|
|
m_iSaveType = FILETYPE_WAVE;
|
|
}
|
|
else if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){
|
|
#ifdef _PROFESSIONAL
|
|
m_iSaveType = FILETYPE_MIDI;
|
|
#else
|
|
m_iSaveType = FILETYPE_MP3;
|
|
#endif
|
|
}
|
|
|
|
pDlg->FilterIndex = m_iSaveType + 1;
|
|
|
|
String strType;
|
|
if( m_iSaveType==FILETYPE_WAVE ){
|
|
strType = "wav";
|
|
}
|
|
else if( m_iSaveType==FILETYPE_MP3 ){
|
|
strType = "mp3";
|
|
}
|
|
else if( m_iSaveType==FILETYPE_MIDI ){
|
|
strType = "mid";
|
|
}
|
|
|
|
pDlg->DefaultExt = strType;
|
|
|
|
if( pDlg->Execute(Handle) ){
|
|
m_editFileName->Text = pDlg->FileName;
|
|
#ifdef _PROFESSIONAL
|
|
if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){
|
|
if( m_imgComposeCheck->Tag!=1 ){
|
|
m_imgComposeCheck->Tag = 1;
|
|
m_imgComposeCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgComposeCheck->Tag]);
|
|
m_imgComposeCheck->Invalidate();
|
|
}
|
|
|
|
if( m_imgSongCheck->Tag != 0 ){
|
|
m_imgSongCheck->Tag = 0;
|
|
m_imgSongCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgSongCheck->Tag]);
|
|
m_imgSongCheck->Invalidate();
|
|
}
|
|
|
|
m_btnOk->Enabled = true;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
delete pDlg;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveForm::FileNameChange(TObject *Sender)
|
|
{
|
|
if( ( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 ||
|
|
ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ) &&
|
|
( m_imgComposeCheck->Tag==1 || m_imgSongCheck->Tag==1 ) ){
|
|
m_btnOk->Enabled = true;
|
|
}
|
|
#ifdef _PROFESSIONAL
|
|
else if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 &&
|
|
m_imgComposeCheck->Tag==1 && m_imgSongCheck->Tag==0 ){
|
|
|
|
m_btnOk->Enabled = true;
|
|
}
|
|
#endif
|
|
else{
|
|
m_btnOk->Enabled = false;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
|
|
{
|
|
switch( Key ){
|
|
case VK_RETURN:
|
|
if( m_btnOk->Enabled )
|
|
ModalResult = mrOk;
|
|
break;
|
|
|
|
case VK_ESCAPE:
|
|
ModalResult = mrCancel;
|
|
break;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveForm::FormActivate(TObject *Sender)
|
|
{
|
|
if( ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ){
|
|
m_iSaveType = FILETYPE_MP3;
|
|
}
|
|
else if( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 ){
|
|
m_iSaveType = FILETYPE_WAVE;
|
|
}
|
|
#ifdef _PROFESSIONAL
|
|
else if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){
|
|
m_iSaveType = FILETYPE_MIDI;
|
|
}
|
|
|
|
if( m_iSaveType==FILETYPE_MIDI ){
|
|
m_imgComposeCheck->Tag = 1;
|
|
m_imgSongCheck->Tag = 0;
|
|
}
|
|
#endif
|
|
m_imgComposeCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgComposeCheck->Tag]);
|
|
m_imgSongCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgSongCheck->Tag]);
|
|
|
|
FileNameChange( NULL );
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
|