Юрий Зотов дата публикации 16-08-2009 04:29 Сплэш — показываем красиво
Большинство программ (по крайне мере, из тех, что мне довелось видеть), имеющих сплэш-заставку, показывают ее в основном потоке. В том же потоке идет инициализация программы, часто довольно длительная — и в итоге сплэш либо не перерисовывается совсем, либо перерисовывается с задержкой. Почему-то меня всегда это раздражало — ну какой смысл в красивой картинке, если она так плохо рисуется? Либо не делать совсем, а уж если делать — то как следует.
Борьба с ленью длилась много лет и, как ни странно, закончилась победой. Вниманию сообщества предлагается супер-пупер-мега-сплэш, который легко и просто можно использовать в своих проектах. Особенности сплэша:
- живет в DLL, которая динамически загружается только на время показа (ну нет резона увеличивать объем проекта за счет разовой заставки, в которой, к тому же, сама картинка может иметь немалый объем);
- работает в отдельном потоке;
- написан без VCL (ради объема и скорости).
Прилагаемый архив содержит 3 каталога:
- Source (исходники DLL и демо-проекта) ;
- Bin (откомпилированные в Delphi 7 DCU — реально не нужны, но так принято);
- Release (DLL и демо-проект — можно сразу запустить и посмотреть).
В подробных комментариях смысла не вижу (кто разбирается в WinAPI — тот самодокументированный код и так поймет, а для тех, кто не разбирается слишком много комментировать придется). Поэтому поясню только, как это использовать.
- Готовим картинку в формате BMP и обзываем ее файл SplashBmp.bmp (либо правим файл SplashBmp.rc).
- Кладем эту картинку в исходники DLL вместо имеющейся.
- Компилируем файл ресурсов.
- Компилируем DLL.
- К своему проекту подключаем модуль SplashIntf.
- Слегка подправляем код DPR:
try
ShowSplash;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
finally
HideSplash
end;
Application.Run
|
|
Вот и все. Комментарии и замечания приветствуются. Также приветствуется, если, применяя этот сплэш в своей программе, Вы упомянете его авторство.
К статье прилагаются примеры
[Потоки (нити) Threads] [Splash-формы]
Обсуждение материала [ 07-01-2013 22:54 ] 48 сообщений |