Уроки Iczelion'а




Урок 26. Сплэш-экран


Теперь, когда мы знаем, как использовать битмап, мы можем применить его более творчески. Сплэш-экран.

Скачайте пример.

Теория

Сплэш-экран - это окно, у которого нет заголовка, нет системных кнопок, нет border'а, которое отображает битмап на некоторое время и затем исчезает. Обычно оно используется во время загрузки программы, чтобы отображать лого программы или отвлечь внимание пользователя, пока программа делает объемную инициализацию. В этом туториале мы создадим сплэш-экран.

Первый шаг - это прописать битмап в файле ресурсов. Тем не менее, если это важно для вас, то загружать битмап, который будет использоваться только один раз, и держать его в памяти, пока программа не будет закрыта, пустая трата ресурсов. Лучшим решением является ресурсовую DLL, которая будет содержать битмап, и чьей целью является отображение сплэш-экрана. В этом случае вы сможете загрузить DLL, когда вам нужно отобразить сплэш-экран, и выгрузить ее, как только нужда в ней отпадает. Поэтому у нас будет два модуля: основная программа и сплэш-экран. Мы поместим битмап в файл ресурсов DLL.

Общая схема такова:

  • Поместить битмап в DLL как ресурс.
  • Основная программа вызывает LoadLibrary, чтобы загрузить dll в память.
  • Запускается входная функция DLL. Она создаст таймеp и установит время, в течении которого будет отображаться сплэш-экран. Затем она зарегистрирует и создаст окно без заголовка и бордера, после чего отобразит битмап в клиенсткой области.
  • Когда закончится указанный период времени, сплэш-экран будет убран с экрана и контроль будет передан главной программе.
  • Основная программа вызовет FreeLibrary, чтобы выгрузить DLL из памяти, а затем перейдет к выполнению того, к чему она предназначена.

Мы детально проанализируем описанную последовательность действий.

Загрузка/выгрузка DLL

Вы можете динамически загрузить DLL с помощью функции LoadLibrary, которая имеет следующий синтаксис:

LoadLibrary proto lpDLLName:DWORD

Она принимает только один параметр: адрес имени DLL, который вы хотите загрузить в память. Если вызов пройдет успешно, он возвратит хэндл модуля DLL, в противном случае NULL.




Содержание  Назад  Вперед