2011-01-17 11 views
10

Mam dwie różne aplikacje, zarówno aplikacje natywne napisane w C++ Builder 2009, oba MDI, i obie przy użyciu tego samego kodu narzędziowego paska postępu. Jeden z nich prawidłowo aktualizuje pasek zadań systemu Windows 7 wraz z postępem. Drugi nie.Postępy paska zadań Windows 7 działają w jednej aplikacji, ale nie innej.

Nie mogę znaleźć żadnych oczywistych różnic między tymi dwoma aplikacjami. Nie zgłoszono błędów w aplikacji, która uległa awarii: połączenia z ITaskbarList3::SetProgressValue i ITaskbarList3::SetProgressState zwrócą S_OK, ale nic się nie dzieje na pasku zadań systemu Windows 7.

Czy są jakieś kłopoty z uruchomieniem paska postępu paska zadań systemu Windows 7? Jakieś wymagania, których może mi brakować?

+0

Czy działają one na tym samym komputerze? Nie wspominaj o tym. Jeśli nie, to czy jedno urządzenie używa małych ikon na pasku zadań, a drugie duże? Dostajesz tylko nakładki (w tym paski postępu) z dużymi ikonami. –

+0

@Kate: Tak, działają na tym samym komputerze i używają dużych ikon na pasku zadań. –

+0

Czy ten kod narzędziowy znajduje się w tej samej części obu aplikacji lub czy są jakieś (nawet najmniejsze) różnice? Ponieważ wspomniałeś, że obie aplikacje są MDI, spróbuj śledzić ścieżkę, którą komunikaty Windows dla aktualizacji postępu muszą przejść w obu przypadkach. Zgaduję, że w przypadku aplikacji, która nie działa zgodnie z przeznaczeniem, komunikaty aktualizacji postępu nie docierają do głównej pętli wiadomości (aplikacji). Jest to jednak tylko domysły, ponieważ nie mam praktycznego doświadczenia z tą funkcjonalnością. – LightBulb

Odpowiedz

0

Mój problem prawdopodobnie dotyczył Delphi/C++ Builder i był wynikiem różnicy w sposobie, w jaki VCL obsługuje swoje okno najwyższego poziomu.

Jeśli Application.MainFormOnTaskBar jest prawdziwe, to ITaskbarList3 działa tylko wtedy, gdy jako parametr HWND użyto Application.MainFormHandle.

Jeśli Application.MainFormOnTaskBar jest fałszywe, to ITaskbarList3 działa tylko wtedy, gdy jako parametr HWND użyto Application.Handle.

W moim przypadku jeden projekt miał MainFormOnTaskBar prawdziwy, a jeden miał go fałszywy.

-1

Nie napisałem aplikacji przy użyciu paska postępu Windows 7, ale napisałem wiele aplikacji .Net, które wymagają aktualizacji postępu przy użyciu animacji na żywo, a największym zmartwieniem z mojego doświadczenia było to, że aktualizowałeś pasek postępu na główny wątek.

Powiązane problemy