TForm i TApplication
2.08.1999
  • Tworzenie formy, która minimalizuje się do paska zadań.

       Wiele programów tworzy "wtórne" formy, które minimalizują się do paska zadań. Na przykład, MS Exchange otwiera nowe okno, kiedy czytasz wiadomość i to okno minimalizuje się do paska zadań. Netscape otwiera różne okna dla przeglądarki, klienta news i e-mail; każde z tych okien minimalizują się do paska zadań. Minimalizacja okna do pulpitu nie jest zbyt użyteczna i niewiele programów pracuje w ten sposób.

      Okno ulegnie minimalizacji do paska zadań, kiedy jego rozszerzony styl (extended windows style) będzie zawierał parametr WS_EX_APPWINDOW. Domyślnie wtórna forma nie ma ustawionego tego stylu. Możesz zminimalizować swoje okno do paska zadań stosując "subclassing" funkcji CreateParams i zmieniając rozszerzony styl. Użyj tego kodu we wtórnej formie.

//w pliku .h
private:
void __fastcall TForm2::CreateParams(TCreateParams &Params)

//w pliku .cpp
void __fastcall TForm2::CreateParams(TCreateParams &Params)
    {
      TForm::CreateParams(Params);
      Params.ExStyle |= WS_EX_APPWINDOW;
    }
      Będziesz prawdopodobnie chciał również zmienić właściciela wtórnej formy. Tutaj nazwa właściciel odnosi się do API a nie VCL. Ukryte okno aplikacji jest właścicielem wszystkich form programu. System operacyjny ukrywa wszystkie okna, kiedy ich właściciel jest ukrywany, bądź minimalizowany. Kiedy tworzysz niezależną formę, która minimalizuje się do paska zadań, takie zachowanie byłoby "nieeleganckie". Aby naprawić ten problem, ustaw WndParent, członka TCreateParams, na wynik funkcji GetDesktopWindow. To sprawi, że właścicielem formy będzie pulpit i wtórna forma nie ulegnie minimalizacji przy dokonywaniu tej czynności na głównej formie.

void __fastcall TForm2::CreateParams(TCreateParams &Params)
    {
        TForm::CreateParams(Params);
        Params.ExStyle  |= WS_EX_APPWINDOW;
        Params.WndParent = GetDesktopWindow();
    }
      Pamiętaj, że zmiana WndParent nie wpływa na to, przez kogo jest kasowana forma.