字幕进度条和PM_设置字幕在VB6中被忽略

字幕进度条和PM_设置字幕在VB6中被忽略,vb6,progress-bar,common-controls,Vb6,Progress Bar,Common Controls,我刚刚尝试在我的一个VB6应用程序中设置滚动字幕进度条,虽然它似乎切换到字幕模式,但自动定时器(设置通过)要么失败,要么被忽略 我有一个合适的视觉风格清单 我在表单的Initialize事件中调用了InitCommonControls 我使用的是v5 SP2通用控件 该项目已编制完成 我已通过SetWindowLong设置了PBS\u字幕样式,并确认其已应用 PBM_SETMARQUEE消息返回1 结果是: 如果我最小化并恢复窗口,它将前进一步 如果我设置.Value,它将前进一步 如果我

我刚刚尝试在我的一个VB6应用程序中设置滚动字幕进度条,虽然它似乎切换到字幕模式,但自动定时器(设置通过)要么失败,要么被忽略

  • 我有一个合适的视觉风格清单
  • 我在表单的
    Initialize
    事件中调用了
    InitCommonControls
  • 我使用的是v5 SP2通用控件
  • 该项目已编制完成
  • 我已通过
    SetWindowLong
    设置了
    PBS\u字幕
    样式,并确认其已应用
  • PBM_SETMARQUEE
    消息返回1
结果是:

  • 如果我最小化并恢复窗口,它将前进一步
  • 如果我设置
    .Value
    ,它将前进一步
  • 如果我发送
    PBM\u STEPIT
    它将前进一步
  • 如果我发送
    PBM_SETMARQUEE
    它就在那里什么也不做
如果我没有传递初始的
PBM_SETMARQUEE
enable消息,那么最小化/恢复不会导致它进行,这表明计时器有问题

这与本文讨论的问题相同

有没有人对VB包装器为什么要删除
PBM_SETMARQUEE
消息或相关的计时器事件有更深入的了解,以及我为什么需要“手动”执行此操作

这是取得进展所必需的

Private Sub Timer1_Timer()
  SendMessage ProgressBar1.hWnd, PBM_STEPIT, 0, ByVal 0&
End Sub

表明它是特定于操作系统的。我已经用一个定期发送
PBM\u STEPIT
的外部定时器替换了
PBM\u SETMARQUEE
。您也可以只设置
。Value=0
每个定时器滴答声,而不是发送消息。2007年这里也描述了同样的问题:
Private Sub Timer1_Timer()
  SendMessage ProgressBar1.hWnd, PBM_STEPIT, 0, ByVal 0&
End Sub