什么可以防止TBPF_INDETERMINATE进度条显示在任务栏中?

时间:2012-05-17 10:54:01

标签: c++ winapi windows-7 progress-bar taskbar

我正在尝试实施新的Windows 7任务栏进度条。我设法使用以下代码使用TBPF_NORMAL状态:

CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&taskbarList));

HRESULT c = taskbarList->SetProgressState(hWnd, TBPF_NORMAL);
if (c != S_OK) MessageBox("ERROR");
taskbarList->SetProgressValue(hWnd, 5, 10);

但是,如果我使用TBPF_INDETERMINATE尝试完全相同的代码,它不显示任何内容,也没有错误:

CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&taskbarList));

HRESULT c = taskbarList->SetProgressState(hWnd, TBPF_INDETERMINATE);
if (c != S_OK) MessageBox("ERROR");

有人知道可能导致此问题的原因吗?

2 个答案:

答案 0 :(得分:7)

好的,看起来我的系统配置存在问题。我在这里发布答案,因为一个进度条动画可以工作而不是另一个进展条动画并不明显。

在系统属性/性能选项中,我禁用了“任务栏和开始菜单中的动画”。此选项显然禁用“不确定”动画,但不禁用常规动画。通过重新启用该选项,不确定的动画可以正常工作。

答案 1 :(得分:1)

这也发生在我身上。在代码中,我有一个表单A,它显示一个表单B(OnLoad事件中的表单B调用SetProgressState),然后表单A调用方法Close to self,当它处于Indeterminate模式时它没有显示任何东西!

如果我首先关闭表格A然后显示表格B,问题就解决了!

我希望这可以帮助有人头疼的事。

相关问题