Работа панели задач Windows 7 работает в одном приложении, но не в другом
У меня есть два разных приложения, как на родные приложения, написанные на С++ Builder 2009, так и на MDI, и оба с использованием того же кода полезной программы. Один из них правильно обновляет панель задач Windows 7 своим прогрессом. Другой - нет.
Я не вижу явных различий между этими двумя приложениями. Ошибки не сообщаются в отказоустойчивом приложении: вызовы ITaskbarList3::SetProgressValue
и ITaskbarList3::SetProgressState
возвращают S_OK
, но ничего не происходит на панели задач Windows 7.
Есть ли какие-либо проблемы при работе с панелью задач панели задач Windows 7? Любые требования, которые могут отсутствовать?
Ответы
Ответ 1
Моя проблема, скорее всего, была специфичной для Delphi/С++ Builder и была результатом различия в том, как VCL обрабатывает окно верхнего уровня.
Если Application.MainFormOnTaskBar
истинно, то ITaskbarList3
работает только в том случае, если Application.MainFormHandle
используется как параметр HWND.
Если Application.MainFormOnTaskBar
является ложным, то ITaskbarList3
работает только в том случае, если Application.Handle
используется как параметр HWND.
В моем случае один проект имел MainFormOnTaskBar
true, а один - false.
Ответ 2
Я не писал приложение, использующее индикатор прогресса Windows 7 специально, но я написал много приложений .Net, которые требуют обновления, используя живую анимацию, и самый большой из моих опытов был уверен, что вы обновляете индикатор выполнения на основной поток.