// 這是我在別處取得程式如下: 一切OK !
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include <Forms.hpp><br />#include
#include
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TOpenDialog *OpenDialog1;
TMediaPlayer *MediaPlayer1;
TTimer *Timer1;
TTrackBar *TrackBar_Volume;
TProgressBar *ProgressBar1;
TLabel *Volume;
TLabel *Label1;
TButton *MiddleVolume;
TButton *MaxVolume;
TTrackBar *TrackBar_Balance;
TLabel *Label2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall MediaPlayer1Click(TObject *Sender, TMPBtnType Button,
bool &DoDefault);
void __fastcall Timer1Timer(TObject *Sender);
void __fastcall TrackBar_VolumeChange(TObject *Sender);
void __fastcall TrackBar_BalanceChange(TObject *Sender);
void __fastcall MiddleVolumeClick(TObject *Sender);
void __fastcall MaxVolumeClick(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#include
#include
#pragma hdrstop
#include "Unit1.h"
#include // 新加入
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
DWORD OldVolume;
DWORD NewVolume;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TrackBar_Volume->Max = 10;
TrackBar_Volume->Position = 10; //Set the Volume position to Maximum
TrackBar_Balance->Max = 10;
TrackBar_Balance->Position = 5; //Set the Balance position to the middle
// Set Volume level to maximum
NewVolume = 0xffffffff;
waveOutSetVolume(0, NewVolume );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if( OpenDialog1->Execute() )
{
MediaPlayer1->FileName=OpenDialog1->FileName;
try
{
MediaPlayer1->Open();
}
catch (...)
{
Application->MessageBox("Open File Exception :",
mtWarning,
MB_ICONWARNING | MB_OK);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MediaPlayer1Click(TObject *Sender,
TMPBtnType Button, bool &DoDefault)
{
if( Button == btPlay )
{
Timer1->Enabled = true;
}
else
{
if ( Button == btStop )
{
Timer1->Enabled = false;
}
}
DoDefault = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
ProgressBar1->Position = (TProgressRange)( MediaPlayer1->Position * 100 /
MediaPlayer1->Length );
if( ProgressBar1->Position == 100 )
{
Timer1->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar_VolumeChange(TObject *Sender)
{
int value = ( (float)TrackBar_Volume->Position /
(float)TrackBar_Volume->Max ) * (float)0xFFFF;
waveOutSetVolume( 0, MAKELONG(value, value) );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar_BalanceChange(TObject *Sender)
{
int middle_value = ( (float)TrackBar_Volume->Position /
(float)TrackBar_Volume->Max ) * (float)0xFFFF;
int value = ( (float)TrackBar_Balance->Position /
(float)TrackBar_Balance->Max ) * (float)0xFFFF;
if ( TrackBar_Balance->Position < 5 )
{
//Left channel: change low order word
waveOutSetVolume( 0, MAKELONG( middle_value, value ) );
}
if ( TrackBar_Balance->Position > 5 )
{
//Right channel: change high order word
waveOutSetVolume( 0, MAKELONG( TrackBar_Balance->Max - value,
middle_value ) );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MiddleVolumeClick(TObject *Sender)
{
TrackBar_Volume->Position = TrackBar_Volume->Max/2;
int value = ( (float)TrackBar_Volume->Position /
(float)TrackBar_Volume->Max ) * (float)0xFFFF;
waveOutSetVolume( 0, MAKELONG(value, value) );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MaxVolumeClick(TObject *Sender)
{
TrackBar_Volume->Position = TrackBar_Volume->Max;
int value = ( (float)TrackBar_Volume->Position /
(float)TrackBar_Volume->Max ) * (float)0xFFFF;
waveOutSetVolume( 0, MAKELONG(value, value) );
}
//---------------------------------------------------------------------------