Владимир Коробицын
Использование таймера. Извлечение текущего времени из компьютера. Экранная заставка для Windows. Назначение клавиш.
Создайте папку Lesson41. Поместите в нее файлы Mci.vbx, 00.avi, 01.avi и 41.wmf. Три последних файла можно заменить любыми другими, имеющими расширения AVI, WMF (или BMP). Запустите Visual Basic. Окно формы Form1 «окрасьте», например, в серый цвет. Расположите это окно в правой нижней части экрана. Добавьте в проект Вашего приложения файл поддержки мультимедийных объектов Mci.vbx. Для этого в меню File (Файл) выберите команду Add File ... (Добавить файл …) и через появившееся окно загрузите файл Mci.vbx. В окне объектов появится значок мультимедийных объектов. Щелкните мышью по кнопке с этим значком и поместите объект MMControl1 на форму Вашего приложения в нижней ее части. Подберите подходящие размеры этого объекта.
Сохраните проект Вашего приложения в папке Lesson41. Выйдите из среды Visual Basic. Из папки Lesson41 запустите файл Project1.mak, который автоматически загрузит Visual Basic. В правой части формы Form1 поместите две командные кнопки. Для командной кнопки Command1 в процедуру Command1_Click впишите программный код:
MMControl1.Command = "Close"
MMControl1.FileName = "00.avi"
MMControl1.Command = "Open"
Вторая строка устанавливает имя файла для объекта MMControl1. Третья строка открывает этот файл. Первая строка необходима для закрытия файла при многократном обращении к объекту MMControl1.
Для командной кнопки Command2 в процедуру Command2_Click впишите программный код:
MMControl1.Command = “Close”
MMControl1.FileName = “01.avi”
MMControl1.Command = ”Open”
Для командной кнопки Command1 свойству Caption придайте значение «Видео 1», а для кнопки Command2 свойству Caption придайте значение «Видео 2».
Запустите приложение и проверьте его в работе. Незадействованные клавиши проигрывателя лучше скрыть от пользователя, придав их свойству Visible (Видимость) значение False (Ложь). При желании Вы можете поместить на форму еще несколько командных кнопок, с помощью которых будете загружать другие видео и анимационные файлы. В окно приложения можете поместить выбранный на Ваше усмотрение рисунок, например, из метафайла 41.wmf. Если Вы хотите, чтобы сразу после нажатия на клавиши «Видео 1» или «Видео 2» автоматически начиналась демонстрация видео-файла, то в процедуру Command1_Click и Command2_Click необходимо будет дописать четвертую строку:
MMControl1.Command = "Play"
Эта строка объекту MMControl1 подаст команду на воспроизведение загруженного в него файла. Ее выполнение равносильно нажатию на кнопку «Воспроизведение» объекта MMControl1.
А теперь познакомимся с еще одним полезным объектом типа таймер. Во время работы приложения данный объект остается «невидимым». Таймер в приложении служит для точного отсчета промежутков времени. Минимальный интервал времени может составить одну миллисекунду. По истечении заданных промежутков времени можно заставить приложение выполнять определенные действия. Мы используем таймер для вывода показаний часов компьютера. Для размещения таймера нажмите на кнопку с его изображением в окне объектов и поместите таймер в любой части формы Form1, свободной от других объектов. В окне свойств этого объекта для свойства Interval (Интервал) установите значение 1000, что будет соответствовать одной секунде. На форме создайте этикетку Label1. Ее свойству Caption (Заголовок) придайте пустое значение. Измените белый цвет фона этикетки – пусть он будет серым. В процедуру Timer1_Timer запишите программный код:
Label1.Caption = Time ‘ показать текущее время
Запустив приложение, вы увидите показания часов, которые будут обновляться каждую секунду. Закройте приложение. Откомпилируйте программу и не забудьте сохранить ее проект.
А теперь изготовьте экранную заставку для Windows. Создайте папку Lesson42. Сюда поместите файлы 42.bmp, 43.mid и Mci.vbx. Заставка должна быть темной, и ее изображение должно постоянно изменяться или передвигаться по экрану. Ведь основное назначение заставки – защита экрана дисплея от излишней яркости. Форму Form1 «выкрасите» в черный цвет. Ее свойству WindowState (Статус окна) придайте значение 2-Maximized (Максимальное), а свойству BorderStyle (Граничный стиль) значение 0-None (Нет), для того чтобы приложение-заставка заняло всю площадь экрана и исчезла рамка окна вместе со стандартными кнопками управления. На форму Form1 поместите объект Image1 (Образ). Используя свойство Picture (Рисунок) этого объекта, поместите на форму фотографию Альберта Эйнштейна из файла 42.bmp. Для объекта Image1 свойству Stretch (Изменение размера) придайте значение True (Истина). В процедуры прерывания Form_Click для формы Form1 и Image1_Click для объекта Image1 (Образ) запишите одинаковую строку:
End ‘ закрытие работы приложения
Она необходима, для того чтобы в любой момент пользователь смог нажатием на мышь убрать с экрана заставку. Ведь кнопка закрытия приложения после удаления рамки окна стала недоступной. Будет нелишним, если Вы предусмотрите выход из заставки, назначив для этой цели клавиши «Esc», «Enter
If KeyAscii = 27 Then End
If KeyAscii = 13 Then End
If KeyAscii = 32 Then End
Первая строка при условии нажатия на клавишу «Esc» завершает работу приложения. Две следующие строки работают аналогично для клавиш «Enter» и «Пробел». Для назначения клавиш используйте наряду с событием KeyPress (Нажатие на клавишу) такие события, как KeyDown (Клавиша внизу) и KeyUp (Клавиша вверху).
Для объекта Image1 свойству Visible (Видимость) придайте значение False (Ложь), за тем, чтобы в первое время работы приложения изображение Эйнштейна было невидимым. Для управления объектом Image1 на форме разместите таймер Timer1 и для его свойства Interval (Интервал) установите значение 2000 (две секунды). В процедуру прерывания Timer1_Timer впишите программный код:
m = m + 1 ‘ счетчик
Image1.Visible = False ‘ скрывает фотографию
Image1.Height = Image1.Height * 1.5 ‘ увеличение высоты
Image1.Top = 5000 – Image1.Height / 2 ‘ смещение вверх
Image1.Width = Image1.Width * 1.5 ‘ увеличение ширины
Image1.Left = 5000 – Image1.Width / 2 ‘ смещение влево
Image1.Visible = True ‘ показывает фотографию
If m = 9 Then ‘ условие
Image1.Visible = False ‘ скрывает фотографию
Image1.Height = 1000 ‘ устанавливает начальное значение высоты
Image1.Width = 1200 ‘ устанавливает начальное значение ширины
m = 0 ‘ обнуляет счетчик
End If ‘ конец условия
В окне для ввода программного кода для формы Form1 в общем разделе (general) запишите строку:
Dim m ‘ резервирование памяти для переменной
Эта строка необходима затем, чтобы зарезервировать область памяти для переменной m. Переменная m служит для организации счетчика m = m + 1. Переменная m наращивается на единицу через каждые две секунды. В зависимости от значения переменной m работают операторы в процедуре прерывания Timer1_Timer.
В процедуру прерывания Form_Load запишите строки, устанавливающие начальные высоту и ширину фотографии при загрузке приложения:
Image1.Height = 1000
Image1.Width = 1200
Если хотите, чтобы работа заставки сопровождалась мелодией, подберите подходящий для этого случая файл с расширением MID. Например, файл 43.mid. Добавьте в проект Вашего приложения файл Mci.vbx, так как Вы это сделали в самом начале данного урока для первого приложения. На форме Form1 разместите объект MMControl1. Превратите его в «невидимку», придав его свойству Visible (Видимость) значение False (Ложь). В процедуру прерывания Form_Load, которая срабатывает во время загрузки приложения, допишите строки, смысл которых Вы уже знаете:
MMControl1.FileName = “43.mid”
MMControl1.Command = "Open"
MMControl1.Command = "Play"
Для того чтобы файл мелодии воспроизводился «бесконечно», в процедуру прерывания MMControl1 _Done, которая срабатывает в момент окончания воспроизведения файла мелодии, запишите строки:
MMControl1.Command = “Prev”
MMControl1.Command = "Play"
Первая строка объекту MMControl1 подаст команду «перемотка назад», с командой второй строки Вы уже знакомы.
Создайте исполняемый EXE-файл, а затем переименуйте его, изменив расширение EXE на расширение SCR. Полученный файл с расширением SCR и библиотеку динамических связей Vbrun300.dll скопируйте в папку Windows. Для того чтобы заставка шла в сопровождении мелодии, ее файл с расширением MID и файл его поддержки Mci.vbx необходимо будет также скопировать в папку Windows.
Если Вы хотите в своих приложениях шире использовать возможности клавиатуры, то создайте простейшее приложение для определения кода клавиши. Для этого процедуру прерывания Form_KeyPress заполните программным кодом, состоящим всего из одной строки:
Print KeyAscii ‘ печать на экран кода нажатой клавиши
Запустите приложение. При нажатии, например, на клавишу «Enter» получите значение кода этой клавиши – 13, а при нажатии на клавишу «d» – 100. При одновременном нажатии на клавиши «Shift» и «d» получите 68.
Домашнее задание
1. Создайте приложение, в котором будут присутствовать пять видео-файлов, так чтобы при запуске этого приложения автоматически началась демонстрация первого файла и через две секунды после ее завершения запускался следующий файл. При завершении демонстрации последнего файла, приложение также автоматически останавливало свою работу.
2. Самостоятельно изучите объект Shape (Фигура) и его свойства. Подумайте, как применить этот объект в ранее созданных Вами приложениях.
3. Используйте свойство Stretch (Изменение размера) объекта Image (Образ) для приложения, в котором автомобиль с прицепом, доехав до края окна формы, останавливается и начинает деформироваться в горизонтальном направлении, а затем, восстановив прежние размеры, откатывается назад.
4. Озвучьте в выше указанном приложении столкновение автомобиля подходящим файлом с расширением WAV. Мультимедийный объект MMControl должен быть невидимым.