2011-01-17 14 views
10

İki farklı uygulamaya sahibim: her ikisi de C++ Builder 2009'da yazılmış yerel uygulamalar, hem MDI hem de her ikisi de aynı ilerleme çubuğu yardımcı kodunu kullanarak. Bunlardan biri, Windows 7 görev çubuğunu ilerlemeyle doğru şekilde günceller. Diğeri yok.Windows 7 görev çubuğu ilerlemesi bir uygulamada çalışır ancak başka bir değil

İki uygulama arasında belirgin farklılıklar bulamıyorum. Başarısız uygulamada hata bildirilmiyor: ITaskbarList3::SetProgressValue ve ITaskbarList3::SetProgressState çağrıları S_OK döndürür, ancak Windows 7 görev çubuğunda hiçbir şey olmaz.

Windows 7 görev çubuğu ilerleme çubuğunu çalışmaya başladığında herhangi bir sorun var mı? Eksik olabilecek herhangi bir gereksinim var mı?

+0

Aynı makinede mi çalışıyorlar? Bundan bahsetmiyorsun. Değilse, bir makine görev çubuğu ve diğeri için küçük simgeler kullanıyor mu? Büyük simgelerle yalnızca bindirmeleri (ilerleme çubuğu dahil) elde edersiniz. –

+0

@Kate: Evet, aynı makinede çalışıyorlar ve büyük görev çubuğu simgeleri kullanıyorlar. –

+0

Bu yardımcı program kodu, her iki uygulamanızın aynı bölümünde mi yoksa herhangi bir (en ufak bile olsa) farklılık var mı? Her iki uygulamanın da MDI olduğunu belirttiğiniz için, her iki durumda da ilerleme güncellemesi için Windows mesajlarının gitmesi gereken yolu izlemeyi deneyin. Tahmin edildiği gibi çalışmayan uygulama durumunda, güncelleme güncelleme mesajlarının ana (uygulama) mesaj döngüsüne ulaşmadığını tahmin ediyorum. Bununla birlikte, bu sadece bir tahmindir, çünkü bu işlevsellikle pratik deneyimim yok. – LightBulb

cevap

0

Sorunum muhtemelen Delphi/C++ Builder'a özgüydi ve VCL'nin üst düzey penceresini işleme şeklindeki bir farkın sonucuydu.

Application.MainFormOnTaskBar doğruysa, ITaskbarList3 yalnızca HWND parametresi olarak Application.MainFormHandle kullanılıyorsa çalışır.

Application.MainFormOnTaskBar öğesi yanlışsa, yalnızca HWND parametresi olarak Application.Handle kullanılıyorsa çalışır. Benim durumumda, bir projede MainFormOnTaskBar doğru vardı ve bir tanesi yanlış yapmıştı.

-1

Özel olarak Windows 7 ilerleme çubuğunu kullanarak bir uygulama yazmamıştım, ancak canlı bir animasyon kullanarak ilerleme durumunu güncellemeyi gerektiren çok sayıda .NET uygulaması yazdım ve deneyimlerimden en büyük olanı, ilerleme çubuğunu güncellediğinizden emin oluyordu. ana iş parçacığı.

İlgili konular