1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Splash.h"
//---------------------------------------------------------------------------
USEFORM("Principale.cpp", PrincipaleForm);
USEFORM("Splash.cpp", SplashForm);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
// On renseigne le titre de l'application
Application->Title = "Titre";
TSplashForm *Splash = new TSplashForm(NULL);
// On affiche la fiche
Splash->Show();
// on affiche son contenu
Splash->Repaint();
// On se met en attente
while(Splash->Affichage)
{
Application->ProcessMessages();
}
// on récupère la valeur du booléen pour quitter l'application
bool QuitterApplication = Splash->QuitterApplication;
Forms::TMonitor *SelectedMonitor;
int PixelCount = 0;
TRect ResultRect;
// On balaye les moniteurs
for(int i = 0; i < Screen->MonitorCount; i++)
{
// On regarde s'il y a intersection entre le moniteur et le Splash
if(IntersectRect(ResultRect, Screen->Monitors[i]->BoundsRect, Splash->BoundsRect))
{
// IntersectRect donne le nombre de pixel de ma Form dans le Moniteur i
int TempCount = ResultRect.Width() * ResultRect.Height();
if(TempCount > PixelCount)
{ // Si le nombre de pixel est plus grand que celui du dernier moniteur
// alors cela veut dire que la Form fait partie en plus grande partie
// de ce moniteur, donc on sélectionne ce moniteur
PixelCount = TempCount;
SelectedMonitor = Screen->Monitors[i];
}
}
}
// On détruit la fiche de splash
delete Splash;
Splash = NULL;
// Si l'on doit Quitter l'application
if(QuitterApplication)
{
// On quitte l'application
Application->Terminate();
}
// Sinon on ne doit pas quitter l'application
else
{
Application->CreateForm(__classid(TPrincipaleForm), &PrincipaleForm);
// On affecte le rectangle du Moniteur du Splash au la form Principale
PrincipaleForm->BoundRect = SelectedMonitor->BoundsRect;
Application->Run();
}
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
} |