新手用C++ Builder编一个音频播放器,程序编译链接成功,运行时点播放按钮无反应,求大侠帮忙。

monlight 2011-09-20 05:41:20
新手用C++ Builder编一个音频播放器,程序编译链接成功,运行时点播放按钮无反应,求大侠帮忙。
以下为程序代码:
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <Dialogs.hpp>
#include <ExtCtrls.hpp>
#include <Menus.hpp>
#include <MPlayer.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TMediaPlayer *MediaPlayer1;
TMainMenu *MainMenu1;
TMenuItem *N1;
TMenuItem *N6;
TMenuItem *N7;
TMenuItem *N9;
TMemo *Memo1;
TOpenDialog *OpenDialog1;
TMenuItem *N2;
TMenuItem *N3;
TMenuItem *N4;
TMenuItem *N5;
TMenuItem *N10;
TMenuItem *N8;
TTimer *Timer1;
TLabel *Label1;
TEdit *Edit1;
TTrackBar *TrackBar1;
void __fastcall N2Click(TObject *Sender);
void __fastcall N3Click(TObject *Sender);
void __fastcall N5Click(TObject *Sender);
void __fastcall N7Click(TObject *Sender);
void __fastcall N10Click(TObject *Sender);
void __fastcall N9Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall Timer1Timer(TObject *Sender);
private:
int mCount;
void __fastcall OpenFile(AnsiString mFileName);
void __fastcall RandomSort(void); // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::OpenFile(AnsiString mFileName)
{
AnsiString str = mCount + 1;
str += "/";
str += Memo1 -> Lines -> Count;
str += " " + mFileName;
Edit1 -> Text = str;
MediaPlayer1 -> FileName = mFileName;
try
{
MediaPlayer1 -> Open();
}
catch(...)
{
ShowMessage("无法播放该文件!就是不给你听!");
return;
}
MediaPlayer1 -> Play();
TrackBar1 -> Min = 0;
TrackBar1 -> Max = MediaPlayer1 -> Length;
Timer1 -> Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RandomSort(void)
{
if(Memo1 -> Lines -> Count < 2) return;
AnsiString str;
int I,J;
randomize();
for(I = 0; I < Memo1 -> Lines -> Count; I++)
{
J = random(Memo1 -> Lines -> Count);
str = Memo1 -> Lines -> Strings[I];
Memo1 -> Lines -> Strings[I] = Memo1 -> Lines -> Strings[J];
Memo1 -> Lines -> Strings[J] = str;
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
char str[32];
GetWindowsDirectory(str,30);
OpenDialog1 -> InitialDir = AnsiString(str) + "\\谢霆锋";
OpenDialog1 -> Filter = "声音(*.mp3)|*.mp3|所有文件(*.*)|*.*";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
TrackBar1 -> Position = MediaPlayer1 -> Position;
if(MediaPlayer1 -> Position == MediaPlayer1 -> Length)
{
if(mCount < Memo1 -> Lines -> Count)
{
MediaPlayer1 -> Close();
OpenFile(Memo1 -> Lines -> Strings[mCount]);
mCount++;
}
else
{
if(N7 -> Checked)
{
if(N9 -> Checked) RandomSort();
mCount = 0;
OpenFile(Memo1 -> Lines -> Strings[mCount]);
mCount++;
}
else
Timer1 -> Enabled = false;
}
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)
{
if(OpenDialog1 -> Execute())
{
Memo1 -> Lines -> Clear();
for(int I = OpenDialog1 -> Files -> Count-1; I >= 0; I--)
Memo1 -> Lines -> Add(OpenDialog1 -> Files -> Strings[I]);
if(N9 -> Checked) RandomSort();
mCount = 0;
OpenFile(Memo1 -> Lines -> Strings[mCount]);
mCount++;
OpenDialog1 -> InitialDir = GetCurrentDir();
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)
{
MediaPlayer1 -> Close();
Timer1 -> Enabled = false;
TrackBar1 -> Position = 0;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N5Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N7Click(TObject *Sender)
{
N7 -> Checked =! N7 -> Checked;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N10Click(TObject *Sender)
{
N10 -> Checked = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N9Click(TObject *Sender)
{
N9 -> Checked = true;
}

...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
monlight 2011-09-21
  • 打赏
  • 举报
回复
有问题想请教一下zzbinfo,我按照这代码播放不了,选择任何DeviceType 都播放不了,其他键也失效,只有选择dtCDAudio时,那个Eject按钮有效。是不是硬件问题?还是有些属性我不会设置?
PS: 已经遵循你说的,但按键也是没有反应,请问你用哪种DeviceType 播放mp3文件?然后有哪些关键属性要设置? 谢谢!
monlight 2011-09-21
  • 打赏
  • 举报
回复
成功了,谢谢两位高手相助。
纯冰糖 2011-09-21
  • 打赏
  • 举报
回复
DeviceType 设置 dtAutoSelect 自动选择模式
你试着Open一个Mp3,再看看能不能播放
zzbinfo 2011-09-21
  • 打赏
  • 举报
回复
DeviceType 用dtAutoSelect自动。属性都是默认的。你要用N2Click先打开文件就自动播放了,Timer1的Enabled设置成false。
zzbinfo 2011-09-20
  • 打赏
  • 举报
回复
测试了你发的代码,确定是可以正确播放mp3的。不过要主意一个问题就是文件的路径和文件名最好不要有中文,路径长度不要太长,不然memo里面显示的是2行的话播放的时候没有办法正确的获得文件名。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧