感谢您使用本程序
本程序需要您安装Windows Media Player 9以上版本!!
本程序在Win98/2k/XP & VB6.0环境下测试通过。
主要功能:
1.使用播放列表连续播放歌曲;
2.播放歌曲时同步显示歌词;(LRC歌词文件除后缀必须和歌曲文件同名,而且在同一目录下!)
3.实现文件的拖放操作。
本程序全部由小弟个人编写,多有不足之处,还望高人不吝赐教。
程序中的问题全部写在Form1代码的最底端!
2.0更新信息:
1.改进用户接口(界面);
2.改进读取歌词文件的算法;
3.实现磁性窗口。
3.0更新信息:
1.实现同步滚动显示歌词,并动态改变滚动速度;
2.添加气球提示;
3.添加了歌词秀的显示模式;
4.修正了磁性窗体的某些BUG。
下载地址:
http://pickup.mofile.com/2488506978356145
http://www.esnips.com/doc/0d2f9300-9476-474e-a2a3-16d5a136e99c/Mp3播放器★歌词同步显示★3.0
我这个程序中可是有“复活节彩旦”的呦,换句话说就是程序中有些“小秘密”,不研究一下代码可是发现
不了的!(提示下:在编辑歌词框架的“保存”按钮中—:)
设计札记:
一、关于timer控件
起初我设计动态滚动歌词的算法时,思路是利用一个Timer控件,将它的interval设为100,这样它就每
秒发生10次。再建立一个变量tv,在timer事件中执行P1(Pictruebox).CurrentY=P1.CurrentY-tv,再根据
歌词文件来改变tv,从而通过改变tv来控制歌词的滚动速度。
然而,当我调试的时候却发现,程序的运行结果总是不近如人意。经过我漫长而有仔细的排查,终于发
现:理论上我的算法是没有错误的,但是实际上,也许是由于VB本身的原因,interval设为100的timer事件
在一秒中的发生次数根本没有10次。而且我发现,这种timer的发生频率的误差和2个因素有关:一是
interval的大小,interval越大,误差越小,interval越小,误差越大;另外误差还和计算机的配置有关,
配置越好,误差越小,反之误差越大。
而我起初的算法对timer事件发生频率的精确度有很高要求,而解决这个问题有2种方案:一是再建立一
个interval相同的Timer控件用来专门计算timer事件的确切发生频率;否则就要改变动态滚动歌词的算法。
最终,我选择了后者。现在的算法和interval无关,也就不存在误差的问题了。
以上是鄙人在设计程序时的一丝拙见,还望高人不吝赐教!
二、关于磁性窗体
当我在网上发布2.0版本时,有人提出磁性窗体在主窗体移动时有BUG,当时我怎么调试也没发现。然而
,就在我此次准备发布3.0版本时,终于发现了BUG。
让我万万没有想到的是:BUG竟然是由于一个“拖动时显示窗口内容”的系统选项的设置不同而引起的
。(Win2k和WinXP中在“显示属性”的“效果”选项卡中,Win98在“文件夹选项”的“查看”选项卡中)
这个选项将会影响WindowProc。如果没有勾选“拖动时显示窗口内容”,则从您拖动窗口按下鼠标开始
,到完成拖动松开鼠标为止,系统只会向WindowProc发送一次WM_MOVE消息;但如果勾选了“拖动时显示窗
口内容”,则从您拖动窗口按下鼠标开始,每移动一下鼠标,系统就会向WindowProc发送一次WM_MOVE消息
,直到您松开鼠标。
如此一来,原来磁性窗体的算法就会出现严重BUG,所以我在此次3.0版本中修正了该BUG。不过不知道
为什么,有些地方还是不够理想,还望高手不吝赐教!:-)