Minimalizacja okna (różne błędy)

0

Cześć
Mam nietypowy problem.
Sorki że się rozpiszę, ale może ktoś z Was miał taki problem i jakoś go rozwiązał.
Otóż robię programik i użyłem w nim komponentu do nakładania skórek (jest b. dobry i niechciałbym z niego rezygnować ale nie mam kodu by luknąć co za błąd w nim siedzi) ..i gdy kliknę na button minimalizuj to na moment przed minimalizacją pokazana jest standardowa belka windowsa - bardzo brzydko to wygląda ( jest skórka, znika kawałek skórki na belce..a potem minimalizacja)
Więc wpadłem na pomysł by przechwycić moment wciśnięcia buttona i tam podstawić swój kod na minimalizację. Zrobiłem to tak:

PROCEDURE TForm1.WMSysCommand(var Message:TWMSysCommand);
Begin
 //jeżeli kliknięto na guzik minimalizacji okna to...
 if message.CmdType = SC_MINIMIZE then
  begin
    //poniższy sposób minimalizacji zapewnia uniknięcie błędu skórki (belka)
    ShowWindow(Application.Handle, SW_MINIMIZE);
    //jeżeli opcja chowania do traya to...
    if CoolTrayIcon1.MinimizeToTray then
    begin
      Application.MainForm.Visible:= False;
      ShowWindow(Application.Handle,SW_HIDE);
    end;
  end else inherited              
End;

Działa dobrze - okno szybko szybko znika i albo chowa się na pasek zadań, albo w tray.
Ale :( znowu kolejny problem... okno minimalizuje się z różnych miejsc na ekranie. Wyjaśnię w czym rzecz:
Przykładowo minimalizuję okno klikając na "szufladę" okna na pasku zadań lub wybierając tam z menu myszy _Minimalizuj
i wtedy jakoś zapamiętywana jest pozycja okna.
Gdy przesunę okno w inne miejsce ekranu i kliknę na guzik minimalizuj to zaczyna mi minimalizować z tej ostatniej pozycji.
Po [CIACH!] to wygląda.. okno jest w prawym górnym rogu ekranu - klikam na minimalizację.. leci przykładowo w lewy górny róg (tam gdzie było ostatnio) i dopiero na pasek zadań :(
Głowa mnie boli bo nie mam rozwiązania ... podumałem troche, potestowałem i stwierdziłem że najbardziej prawidłowe jest minimalizowanie okna gdy wybiorę z menu myszy (szuflady na pasku) opcję Minimalizuj.
Ale nie wiem jak zainicjować kliknięcie na tą opcję ? Gdybym znał instrukcję to umieściłbym ją w powyższej proc. WMSysCommand
Proszę zerknijcie - może zrobiłem jakiś błąd, albo może ktoś zna ten problem i rozwiązanie ?

0

hmm... zawsze tak jest?
u mnie wszystko dziala normalnie, tyle ze nie mam CoolTray. moze to jego wina?
z reszta, sam nie wiem, czy dobrze Cie zrozumialem:
odpalasz program
klikasz na belke a on sie minimalizuje
przywracasz okno
przesuwasz okno
klikasz na przycisk minimalizacji "_"
a on minimalizuje sie z miejsca pierwszej pozycji okna???
dziwne... hmm... sprawdz na innym kompie, systemie...
czasami okazuje sie, ze jeden z systemow jest "wybrancem" na ktorym jakas jedna rzecz ni cholere nie chce dzialac...

pozdro i powodzenia [browar]

0

Dobrze zrozumiałeś - właśnie tak mi robi.
A testowałem go na 89 i XP i tak samo.
Trochę sobie poradziłem dałem inne instrukcje:

PROCEDURE TForm1.WMSysCommand(var Message:TWMSysCommand);
Begin
 //jeżeli kliknięto na guzik minimalizacji okna to...
 if message.CmdType = SC_MINIMIZE then
 begin
   ShowWindow(Application.Handle, SW_HIDE);                    //chowa okno 
   ShowWindow(Application.Handle, SW_MINIMIZE);               //minimalizuje okno
 end else inherited                 
End; 
</delphi> okno się chowa, minimalizuje i nie widać nieporządanych efektów - ani tej niedorysowanej skórki ani "starych" miejsc od który następuje minimalizacja okna. Mam namotane w kodzie bo dałem jeszcze swoją prockę na StayOnTop, oraz wydobywanie okna gdy kliknię się na ikonę pliku, a program jest już uruchomiony - jedno z drugim widocznie się gryzło :) Dzięki za zainteresowanie [browar]
0

No i właśnie takie są efekty używania tych kretyńskich windowsowych animacji do minimalizowania okien. Gdyby to ludzie wyłączali nie było by takich problemów

0

no wlasnie. a moze daj w OnCreate zeby wylaczalo animacje...
powinno byc SystemParametersInfo, a parametrow prosze szukac na msdn...

tak nawiasem piszac to nie wiem po jaka cholere to jest w systemie.
rozumiem jak to dali w win95 - po win3.11 taka animacja to musial byc niesamowity bajer. ale pozniej!?
ani to ladne, ani przydatne... ech...
powinno byc chociaz domyslnie wylaczone.

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