Win + D minimalizowanie aplikacji i problem z przywróceniem

0

Witam,

Mam problem z przywróceniem aplikacji po kliknięciu skrótu minimalizującego wszystkie okna (win+D) - okno aplikacji nie zostaje przywrócone i nie można już go przywrócić w ogóle (pozostaje tylko ubić proces).

Zminimalizowanie aplikacji przy wykorzystaniu w/w skrótu nie generuje zdarzeń Application->OnMinimize ani OnRestore.
Co ciekawe jeśli inna aplikacja jest aktywna np builder i kliknę skrót to okna zostaną zminimalizowane i po ponownym naciśnięciu moja aplikacja zostanie poprawnie przywrócona ale jeśli to ona była aktywna to już się nie da przywrócić.

Normalne ręczne minimalizowanie i przywracanie działa ok i generowane są powyższe zdarzenia.

Jakieś sugestie?

PS co więcej funkcja przechwytująca komunikaty po takim zminimalizowaniu i próbie przywrócenia nic nie otrzymuje ... a chyba powinna otrzymać SC_MAXIMIZE. Jak ręcznie minimalizowałem to łapałem komunikaty nr 70, 71

0

A coś mieszasz w tych OnMinimize, OnRestore, a może OnActivate/OnDeactivate/OnShow/OnHide?
Standardowa forma powinna zachowywać się prawidłowo. Najwyraźniej robisz coś, co przeszkadza.

0

No właśnie w OnMinimize OnRestore nic nie mieszam, teraz je podpiąłem by tylko zobaczyć czy są wywoływane poprawnie. OnActivate jest również nie obsługiwane. Na OnShow jest ustawianie parametrów, włączam wątki itd

Dziwne jest to że jeśli aplikacja nie jest aktywna w danym momencie to minimalizując przez win +D działa poprawnie i można przywrócić, okno dostaje komunikaty od windy a jeśli aplikacja jest aktywna w momencie naciśnięcia win+d to już klapa i nie otrzymuje już żadnych komunikatów...

0

Widocznie coś mieszają te aktywowane wątki w OnShow. Pusta formatka od razu utworzona reaguje na WinKey+D i przywraca się bez problemów. Tak jak napisał @Azarien - coś "przeszkadza" oknie aplikacji by mogło się przywrócić w normalny sposób. Próbowałem ustalić logowaniem komunikatów co jest wysyłane do okna aplikacji przy WinKey+D, ale nie umiem tego jednoznacznie okreśłić.

0

zagłębiając się dalej ...

Aplikacja ma główny formularz MainForm (BorderStyle None and BorderIcons None) na którym są inne formularze zawsze na wierzchu (nazwijmy Form1). Co ciekawe jeśli Form1 jest aktywny i kliknę win+d to aplikacja się poprawnie minimalizuje i przywraca. Jeśli główne okno jest aktywne to się minimalizuje i koniec zabawy.

0

... jak tylko zmienię BorderStyle głównego okna z None na bsSizeable to problem znika i poprawnie się przywraca okno po win+d...

Problem rozwiązany. Dla osób które spotkają się z podobnym problemem - w jednym wątku był tworzony obiekt COM, było to poprzedzone funkcją CoInitialize.
Po zamianie na CoInitializeEx(NULL, COINIT_MULTITHREADED) wszystko działa jak należy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1