2011-01-17 4 views
10

C++ Builder 2009에서 작성된 네이티브 응용 프로그램과 MDI 모두와 동일한 진행률 표시 줄 유틸리티 코드를 사용하는 두 가지 응용 프로그램이 있습니다. 그들 중 한 명은 Windows 7 작업 표시 줄의 진행 상황을 적절하게 업데이트합니다. 다른 하나는 그렇지 않습니다.Windows 7 작업 표시 줄 진행은 하나의 응용 프로그램에서 작동하지만 다른 응용 프로그램에서는 작동하지 않습니다.

두 응용 프로그램간에 명백한 차이점을 찾을 수 없습니다. 오류가있는 응용 프로그램에는 오류가보고되지 않습니다. ITaskbarList3::SetProgressValueITaskbarList3::SetProgressState에 대한 호출은 S_OK을 반환하지만 Windows 7 작업 표시 줄에서는 아무런 반응이 없습니다.

Windows 7 작업 표시 줄 진행률 표시 줄이 작동하는 데 문제가 있습니까? 내가 누락 될 수있는 요구 사항은 무엇입니까?

+0

동일한 컴퓨터에서 실행되고 있습니까? 당신은 그 말을하지 않습니다. 그렇지 않다면 한 컴퓨터가 작업 표시 줄과 다른 큰 아이콘을 사용합니까? 큰 아이콘이있는 오버레이 (진행 막대 포함) 만 표시됩니다. –

+0

@Kate : 예, 그들은 동일한 컴퓨터에서 실행 중이며 둘 다 큰 작업 표시 줄 아이콘을 사용하고 있습니다. –

+0

이 유틸리티 코드는 두 응용 프로그램의 같은 부분에 위치합니까? 아니면 (조금이라도) 다른 점이 있습니까? 두 응용 프로그램 모두 MDI라고 언급 했으므로 두 가지 경우 모두에서 진행률 업데이트를 위해 Windows 메시지가 있어야하는 경로를 추적 해보십시오. 예상대로 작동하지 않는 응용 프로그램의 경우 진행 업데이트 메시지가 주 (응용 프로그램) 메시지 루프에 전달되지 않는 것으로 생각됩니다. 그러나이 기능에 대한 실질적인 경험이 없기 때문에 이것은 단지 추측입니다. – LightBulb

답변

0

내 문제는 Delphi/C++ Builder에만 해당 될 가능성이 높았으며 VCL이 최상위 창을 처리하는 방법의 차이로 인해 발생했습니다.

Application.MainFormOnTaskBar이 참일 경우 ITaskbarList3Application.MainFormHandle이 HWND 매개 변수로 사용되는 경우에만 작동합니다.

Application.MainFormOnTaskBar이 거짓이면 ITaskbarList3Application.Handle이 HWND 매개 변수로 사용되는 경우에만 작동합니다.

내 경우에는 하나의 프로젝트에 MainFormOnTaskBar이 있었고 하나는 거짓이었습니다.

-1

Windows 7 진행률 표시 줄을 사용하여 앱을 특별히 작성하지는 않았지만 라이브 애니메이션을 사용하여 진행 상황을 업데이트해야하는 많은 .Net 앱을 작성했으며 내 경험에서 가장 큰 문제는 진행률 표시 줄을 업데이트하고 있다는 것입니다. 주 스레드.

관련 문제