C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Вопрос по Splash Form
Евгений
Отправлено: 17.03.2005, 22:25


Не зарегистрирован







Подскажите, пожалуйста, как сделать так, чтобы сначала отображалась Splash Form а затем главное окно приложения.?

(у меня сейчас вместе с Splash Form на заднем фоне сразу отбражается главное окно приложения)

Как можно это решить??
Gedeon
Отправлено: 18.03.2005, 08:58


Ветеран

Группа: Модератор
Сообщений: 1742



1) Если главная форма создается быстро, то сплэш показывать модально и прятать через нужный интервал, как делать см. поиск;
2) Если сплэш показывается на то время пока создается главная форма, опять же см. поиск.

Короче ищите по форуму уже раз 5 обсуждали.
Valdemar
Отправлено: 18.03.2005, 08:59


Мастер участка

Группа: Участник
Сообщений: 433



Посмотрите здесь
И пользуйтесь поиском.
olegenty
Отправлено: 18.03.2005, 10:47


Ветеран

Группа: Модератор
Сообщений: 2412



2 Gedeon:
QUOTE

1) Если главная форма создается быстро, то сплэш показывать модально ...


блин, ну рискни показать модально. результат тебя по недетски впечатлит. biggrin.gif
olegenty
Отправлено: 18.03.2005, 10:55


Ветеран

Группа: Модератор
Сообщений: 2412



2 Gedeon — пардон, торможу...

просто я сам совмещаю два этих метода: сплэш всегда показывается во время создания форм и модулей, но НЕ МЕНЕЕ 3-х секунд. т.е. я перед показом время сохраняю, а после создания всех форм запускаю цикл:
CODE

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try
   {
        Application->Initialize();

        TfmSplash *f = new TfmSplash(NULL);
        f->Show();
        f->Update();

        TDateTime dtStart = TDateTime::CurrentDateTime();

        Application->Title = "Спецификация плановых изделий";
        Application->CreateForm(__classid(Tfm), &fm);

        TDateTime dtNow = TDateTime::CurrentDateTime();
        while (MilliSecondsBetween(dtStart, dtNow) < 3000)
        {
            Application->ProcessMessages();
            dtNow = TDateTime::CurrentDateTime();
        }

        f->Hide();
        delete f;

        SendMessage(fm->Handle, CM_INIT_COMPLETE, 0, 0); // на это не обращайте внимания
        Application->Run();
   }
   catch (Exception &exception)
   {
        Application->ShowException(&exception);
   }
   catch (...)
   {
        try
        {
            throw Exception("");
        }
        catch (Exception &exception)
        {
            Application->ShowException(&exception);
        }
   }
   return 0;
}
Gedeon
Отправлено: 18.03.2005, 11:34


Ветеран

Группа: Модератор
Сообщений: 1742



Ну я, кстати, тоже, лучше не модальной, а все же поверх всех, ну и хрен с ним, что видно заднюю форму, зато пока сплеш показывается, все проинициализируется и создастся (так в фотошопе например). Можно еще главную форму запускать невидимой, а потом при уничтожении сплеша показывать.

Вернуться в Вопросы программирования в C++Builder