2011-01-17 11 views
10

Tengo dos aplicaciones diferentes, ambas aplicaciones nativas escritas en C++ Builder 2009, ambas MDI, y ambas usando el mismo código de barra de herramientas de progreso. Uno de ellos actualiza correctamente la barra de tareas de Windows 7 con su progreso. El otro no.El progreso de la barra de tareas de Windows 7 funciona en una aplicación pero no en otra

No encuentro ninguna diferencia obvia entre las dos aplicaciones. No se informan errores en la aplicación que falla: las llamadas a ITaskbarList3::SetProgressValue y ITaskbarList3::SetProgressState devuelven S_OK, pero no ocurre nada en la barra de tareas de Windows 7.

¿Hay algún inconveniente para que funcione la barra de progreso de la barra de tareas de Windows 7? ¿Algún requisito que pueda estar perdiendo?

+0

¿Se están ejecutando en la misma máquina? No mencionas eso. Si no, ¿una máquina usa iconos pequeños para la barra de tareas y la otra grande? Solo obtiene superposiciones (incluidas las barras de progreso) con iconos grandes. –

+0

@Kate: Sí, se están ejecutando en la misma máquina y ambos utilizan iconos grandes de la barra de tareas. –

+0

¿Este código de utilidad se encuentra en la misma parte de sus aplicaciones o hay diferencias (incluso las más mínimas)? Como mencionó que ambas aplicaciones son MDI, intente rastrear la ruta de los mensajes de Windows para la actualización del progreso en ambos casos. Supongo que en el caso de una aplicación que no funciona como se esperaba, los mensajes de actualización de progreso no llegan al ciclo de mensajes principal (aplicación). Sin embargo, esto es solo una suposición, ya que no tengo experiencia práctica con esta funcionalidad. – LightBulb

Respuesta

0

Mi problema probablemente fue específico de Delphi/C++ Builder y fue el resultado de una diferencia en cómo maneja la VCL su ventana de nivel superior.

Si Application.MainFormOnTaskBar es verdadero, entonces ITaskbarList3 solo funciona si se utiliza Application.MainFormHandle como parámetro HWND.

Si Application.MainFormOnTaskBar es falso, entonces ITaskbarList3 solo funciona si se utiliza Application.Handle como parámetro HWND.

En mi caso, un proyecto tenía MainFormOnTaskBar verdadero, y uno lo tenía falso.

-1

No he escrito una aplicación usando la barra de progreso de Windows 7 específicamente, pero he escrito muchas aplicaciones .Net que requieren actualización mediante una animación en vivo y la mayor sorpresa de mi experiencia fue que estaba actualizando la barra de progreso en el hilo principal.

Cuestiones relacionadas