|
Ein Spash Screen ist eine Grafik oder ein Fenster das beim Programmstart angezeigt wird und automatisch verschwindet, wenn das Programm bereit ist oder eine bestimmte Zeit verstrichen ist.
Ich zeige hier das Vorgehen mit dem Borland C++ Builder und der VCL.
Alles erstes braucht man ein Formular, das die Grafik und die Daten enthält, die beim Programmstart angezeigt werden sollen, enthält. Am einfachsten verwendet man dafür den About-Dialog TAboutBox, der in einem CBuilder Projekt in der Regel automatisch angelegt wird. Sie können aber auch jedes andere ‘normale’ Formular verwenden, solange es kein MDI-Formular ist.
Die erste Massnahme ist, ein TTimer Objekt auf dem Formular zu plazieren. Setzen sie in den Timer-Eigenschaften Enabled auf true und das Intervall auf z.b. 5000, wenn das Formular nach 5 Sekunden automatisch verschwinden soll. Legen Sie ein OnTimer-Ereignis an und tragen sie folgenden Code ein:
void __fastcall TAboutBox::Timer1Timer(TObject *Sender) { Timer1->Enabled=FALSE; // Timer stoppen Hide(); // Formular verstecken }
Wichtig ist die zweite Zeile, damit der Formular nur ausgeblendet und nicht zerstört wird. Damit der Benutzer das Formular vorzeitig schliessen kann, sollte das Formular auf einen Mausklick reagieren. Wenn sie einen Button dazu benutzen wollen, sollten Sie den gleichen Code wie in der Timerfunktion, in der OnClick Ereignisbehandlungsfunktion des Buttons benutzen. Bei einem Splash Screen ist es üblich, daß der Benutzer irgendwo auf das Formular klicken kann, um es zu schliessen, deshalb sollten Sie auf einen Button verzichten und eine Funktion für das OnClick-Ereignis des Formulars anlegen.
Falls das Formular ein Systemmenü oder einen Close-Button in der Titelzeile anzeigt, brauchen Sie auch noch eine OnClose Ereignisbehandlungsfunktion für das Formular.
void __fastcall TAboutBox::FormClick(TObject *Sender) { Timer1->Enabled=FALSE; // Timer stoppen Hide(); // Formular verstecken }
void __fastcall TAboutBox::FormClose(TObject *Sender, TCloseAction &Action) { Timer1->Enabled=FALSE; // Timer stoppen Action=caHide; // nur verstecken, nicht freigeben }
Als nächstes ist Ihr Hauptformular dran. Um den Splash Screen bei Bedarf anzuzeigen reicht eine Codezeile:
void __fastcall TMainForm::HelpAbout1Execute(TObject *Sender) { AboutBox->Show(); }
Als letztes müssen Sie die cpp-Datei ihres Projektes bearbeiten, damit der Splash Screen auch beim Programmstart angezeigt wird:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { Application->Initialize();
AboutBox= new TAboutBox(NULL); // Splash Screen anlegen AboutBox->Show(); // und anzeigen
Application->CreateForm(__classid(TMainForm), &MainForm); // Weitere Formulare erzeugen // ... // Das Programm ist bereit AboutBox->Hide(); // Splash Screen ausblenden
Application->Run();
delete AboutBox; // Splash Screen freigeben
return 0; }
Wichtig ist, daß der Splash Screen vor allen anderen Formularen erzeugt und angezeigt wird. Wenn Ihr Programm so schnell bereit ist, daß der Splash Screen zu kurz angezeigt wird, lassen Sie den Hide() Aufruf vor dem Application->Run() weg. Da Sie den Spash Screen selber erzeugt haben, müssen Sie ihn beim Programmende auch wieder freigeben.
|