在实际开发中,需要用到用C++ Builder自动播放VCD、DVD的功能,上网搜了半天,C++ Builder关于这方面的实在是太少了,不过VB的倒很多,看了一下VB的。按照它的思路来,碰了“一鼻子灰”。VB和C++ Builder在这方面还是有些区别的。言归正传,要实现这个功能,我们用Windows Media Player,需要安装Windows Media Player插件,直接在C++ Builder中,选择 Component -> Inport Active control -> Windows Media Player(version 1.0),之后选择Install就行了。这样安装完之后,就可以在 ActiveX控件中发现多了一个 Windows Media Player控件。
若想能播放VCD、DVD的功能,则必须在PC机上的WindowsMediaPlayer能正常播放VCD、DVD。一般都是安装一些解码器就行了。对于我用的解码器是ffdshow,用WindowsMediaPlayer播放VCD、DVD基本上是没有问题的。但在具体的安装过程中,也碰到了一些问题,我的显卡芯片是NVIDIA Quadro NVS 135M,由于驱动程序安装的是买电脑时关盘自带的,对MPEG2解码支持不好,所以安装完解码器之后,插入DVD,WindowsMediaPlayer只能听见声音,却不见图像。在网上下载一个最新的显卡驱动程序,就OK啦。
在新建的窗体上放置一个Windows Media Player控件,并把它的属性 Name 改为WMPlayer,再加一个ComboBox,用来列出CDROM的去驱动器盘号。下面是程序实现。
Windows Media Player的属性有很多,网上介绍其常用的属性的也不少,我在这儿也就不作介绍了。
程序代码:
#include
#pragma hdrstop
#include "Media.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "WMPLib_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
IWMPPlaylist *pl;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
FindCdrom();
FindList();
}
//---------------------------------------------------------------------------
void TForm1::FindCdrom(void)
{
int iNumDrive = 0;
int i = 0;
iNumDrive = WMPlayer->cdromCollection->count;
if(iNumDrive == 0)
{
Application->MessageBoxA("There is NO DVD or VCD drive","´íÎó",MB_OK);
}
for(i = 0;i < iNumDrive; i++)
{
ComboBox1->AddItem(WMPlayer->cdromCollection->Item(i)->driveSpecifier,NULL);
}
}
void TForm1::MediaPlay(void)
{
int iNumDrive;
int i = 0;
pl = WMPlayer->cdromCollection->Item(0)->Playlist;//若只有一个驱动器则使用Item(0).
for(i=0;i
count;i++)
{
WMPlayer->currentPlaylist->appendItem(pl->get_Item(i));//在当前的播放列表添加
//播放器的文件
}
WMPlayer->controls->play(); //播放VCD文件
}
程序说明:IWMPPlaylist *pl这个是定义的一个播放列表,FindCdrom、MediaPlay是自定义的为Form的成员函数,FindCdrom是在组合框里列出CDROM的驱动器的盘符。MediaPlay是自动播放CDROM里的视频文件。
阅读(2677) | 评论(0) | 转发(0) |