【问题标题】:Windows 7 taskbar progress works in one app but not anotherWindows 7 任务栏进度在一个应用程序中有效,但在另一个应用程序中无效
【发布时间】:2011-06-10 15:49:25
【问题描述】:

我有两个不同的应用程序,都是用 C++Builder 2009 编写的本机应用程序,都是 MDI,并且都使用相同的进度条实用程序代码。其中之一正确更新了 Windows 7 任务栏的进度。另一个没有。

我找不到这两个应用程序之间的任何明显差异。在失败的应用程序中没有报告错误:对ITaskbarList3::SetProgressValueITaskbarList3::SetProgressState 的调用返回S_OK,但在Windows 7 任务栏中没有任何反应。

在使 Windows 7 任务栏进度条正常工作方面有什么问题吗?有什么我可能遗漏的要求吗?

【问题讨论】:

  • 它们是否在同一台机器上运行?你不提那个。如果不是,一台机器是否使用小图标作为任务栏而另一台使用大图标?您只会看到带有大图标的叠加层(包括进度条)。
  • @Kate:是的,它们在同一台机器上运行,并且都使用大任务栏图标。
  • 此实用程序代码是否放置在您的两个应用程序的同一部分,或者是否有任何(甚至是最轻微的)差异?由于您提到这两个应用程序都是 MDI,因此请尝试跟踪两种情况下 Windows 消息的进度更新必须经过的路径。我猜如果应用程序无法按预期工作,进度更新消息不会进入主(应用程序)消息循环。然而,这只是一个猜测,因为我没有使用此功能的实际经验。

标签: windows windows-7 progress-bar taskbar


【解决方案1】:

我的问题可能是 Delphi/C++Builder 特有的,是 VCL 处理其顶级窗口的方式不同造成的。

如果Application.MainFormOnTaskBar 为真,则ITaskbarList3 仅在Application.MainFormHandle 用作HWND 参数时才有效。

如果Application.MainFormOnTaskBar 为假,则ITaskbarList3 仅在Application.Handle 用作HWND 参数时才有效。

就我而言,一个项目 MainFormOnTaskBar 为真,一个项目为假。

【讨论】:

    【解决方案2】:

    我没有专门使用 Windows 7 进度条编写应用程序,但我编写了许多需要使用实时动画更新进度的 .Net 应用程序,而我的经验中最大的问题是确保您正在更新进度条主线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      相关资源
      最近更新 更多