本帖最后由 stmadman 于 2009-09-15 18:03:54 编辑

解决方案 »

  1.   

    进本知道问题的所在了  
    playHS.Value是按照整数来移动的
    wmp.Controls.currentPosition 产生了类似 1.333521类似这样的数值  不知道用什么办法将他们统一啊
      

  2.   

    wmp.Controls.currentPosition是Double类型的值。
    你只能进行数据转换来统一。
      

  3.   

    dim t as Boolean
    Private Sub playHS_Change()
        if t then
           wmp.Controls.currentPosition = playHS.Value
        end if
    End SubPrivate Sub Timer2_Timer()
        t=false
        If cdFileOpen.FileName <> "" Then
            playHS.Value = wmp.Controls.currentPosition
        End If
        t=true
    End Sub
      

  4.   


    playHS.Value除1,000就可以了,playHS的max要设大,比如30,000
      

  5.   

    Private Sub Form_Load()
        playHS.Min = 0
        playHS.Max = 30000
    End SubPrivate Sub playHS_Change()
        wmp.Controls.currentPosition = playHS.Value/1000
    End Sub
      

  6.   

    的确需要用标志。
    wmp 有现成消息,不需要用 Timer 控件。
    Option ExplicitPrivate m_isSelfChange As BooleanPrivate Sub playHS_Change()
        If Not m_isSelfChange Then
            wmp.Controls.currentPosition = playHS.Value
        End If
    End SubPrivate Sub wmp_PositionChange(ByVal oldPosition As Double, ByVal newPosition As Double)
        Dim lNewPosition As Long
        
        lNewPosition = Int(newPosition)
        If lNewPosition <> playHS.Value Then
            m_isSelfChange = True
            playHS.Value = lNewPosition
            m_isSelfChange = False
        End If
    End Sub
      

  7.   

    你看这样处理行不?
    1、使用wmp打开一个mp3文件时,可以取得他的时间长度,你把它转换为:毫秒,比如一个歌曲长是:3分45秒,那么,转换为毫秒就是:225000毫秒
    2、你把这个225000设置为playHS的Max属性,其Min属性当然是:0
    3、当歌曲播放时,比如wmp播放到了:1分25秒,那么也就是:85000毫秒,你就设置:playHS.Value=85000,这样定位分得很细,应该会好些。4、当然如果你是拖动playHS来控制播放的,那就做一个反操作就是了,通过这样的细分,可能效果会好些。
      

  8.   

    问题已经解决,代码在这里,不用自带控件实现
    http://www.5bt.cn/archives/107
      

  9.   

    前辈我用新的方法做出来了进度条,我实验了一下 PositionChange 这个事件是  当视频的播放进度 被改变的时候才触发的事件,无法用这个事件来实现进度条自动前进啊,求教!