最近需要使用到AxWindowsMediaPlayer,它的使用方法也很简单,为其指定相应的url就可以,可以同时发现这个COM组件关不像想象中的那么好用,不过用他做普通的播放器倒也Ok,它可以实现平常所看到的播放,暂停,停止 ,上一首,下一首等功能。这些功能可以通过它的一个Ctlcontrols属性,Ctlcontrols属性是AxWindowsMediaPlayer的一个重要属性, 此控件中有许多常用成员。这些成员就可以实现那些功能了:
(1)用于播放多媒体文件,其格式为:
窗体名.控件名.Ctlcontrols.play()
如: AxWindowsMediaPlayer1.Ctlcontrols.play()
(2) 方法pause
用于暂停正在播放的多媒体文件,其格式为:
窗体名.控件名.Ctlcontrols.pause()
如: AxWindowsMediaPlayer1.Ctlcontrols.pause()
(3) 方法stop
用于停止正在播放的多媒体文件,其格式为:
窗体名.控件名.Ctlcontrols.stop()
如: AxWindowsMediaPlayer1.Ctlcontrols.stop()
(4) 方法fastforward
用于将正在播放的多媒体文件快进,其格式为:
窗体名.控件名.Ctlcontrols.fastforward()
如: AxWindowsMediaPlayer1.Ctlcontrols.forward()
(5) 方法fastreverse
窗体名.控件名.Ctlcontrols.fastreverse()
如: AxWindowsMediaPlayer1.Ctlcontrols.fastreverse()
这些方法本身容易接受,但是在点歌系统中出现了一个问题:如果需要在一个窗体里面来控制另外一个窗体的播放器的这些状态,那么上面的方法就不可用了!设置断点发现程序确实运行了这些语句,但是播放器就是不起作用,典型的就是我需要在一个窗体里面点击按钮到下一首(不是在播放器里面点击)的时候就不起作用了!这个时候就需要在窗体里面再添加同个按钮,为这几个按钮分别写入上面的那些方法,然后在另外一个窗体里面调用这些按钮事件才可以!其实原因是这样的:这个控件有一个ocxstate属性,这个属性是用于持久化控件的状态的。com组件的状态信息被写在对应窗体的资源文件中,用记事本打开窗体资源文件就可 以看到。在手工创建中,这个ocxstate是没法赋值的。这也是为什么我们从外部调用这些方法不起作用的原因了。