ЛАБОРАТОРНАЯ РАБОТА 5 Тема: Создание заставки текстового редактора. Создание таймера. Цель работы: Научиться использовать различные виды форм. Порядок выполнения работы: Создание заставки 1. Откройте ранее созданный текстовый редактор. Создайте новую форму Form2. Для этого нужно выбрать в главном меню «Проект→Добавить новый элемент». Откроется окно, в котором нужно выбрать «Форма Windows Forms» и задать имя новой формы: 2. Эта форма будет использоваться в качестве заставки перед запуском главного окна приложения. Для новой формы удалите значение свойства Text. Свойству FormBorderStyle присвойте значение None чтобы сделать невидимыми границы окна. Для того, чтобы заставка появлялась в середине экрана, свойству StartPosition нужно присвоить значение CenterScreen. Для удаления кнопок минимизации, максимизации формы и системного меню установите у свойств MinimizeBox, MaximizeBox, ControlBox значения равными False. 3. Также для новой формы свойство Enabled установите равным False для того, чтобы заблокировать обработку событий и лишить возможности пользователя управлять окном с помощью клавиатуры или мыши. 4. Преобразуйте исходный файл проекта. Для этого в обозревателе решений файлов исходного кода найдите главный файл проекта (название_проекта.cpp). Подключите заголовочный файл второй формы: #include "Form2.h" Затем, измените код программы, начиная с создания главного окна, следующим образом: // Создание главного окна и его запуск Form2 ^ F=gcnew Form2(); //создание экземпляра Form2 (в данном случае, формы заставки) F->Show(); //показать форму (здесь это экземпляр F) методом Show() F->Update(); //обновить содержимое формы методом Update() while((clock()/1000) < 3)// задержка на 3 секунды c помощью функции clock() F->Hide(); // скрываем форму заставки методом Hide() Application::Run(gcnew Form1()); return 0; }; Пояснение: функция clock() возвращает время, измеряемое процессором от начала выполнения программы в миллисекундах. ( Так как мы используем эту функцию в самом начале выполнения программы, то количество тактов будет равным 0). Затем, они начнут увеличиваться. Для организации задержки в 3 секунды (чтобы форма заставки висела 3 секунды), нам нужен цикл while, который будет выполняться в данной программе до тех пор, пока функция clock() ни возвратит значение больше 3000 миллисекунд. Затем, программа выйдет из данного цикла while и скроет форму заставки. Подключите библиотеку #include функцию clock(). "time.h" для того, чтобы использовать Пояснение: функция Show() отображает обычное окно, а ShowDialog() - модальное. В программу можно добавить произвольное количество форм (окон), все они будут действовать независимо, если отображены методом Show(). Модальное окно блокирует все остальные окна приложения, пока не будет закрыто это модальное окно. 5. Поместите на форму заставки компонент PictureBox c панели элементов. Установите изображение в свойстве Image. Свойство SizeMode поменяйте на StretchImage, чтобы изображение вписалось в размер компонента. 6. Поместите на форму заставки справа и снизу от рисунка два компонента Label . Отобразите на них информацию об авторе приложения и название приложения, используя различный размер, цвет и начертание шрифта. 7. Запустите приложение и проверьте его работу. Создание таймера 8. Добавьте к проекту новую форму Form3, также, как добавляли Form2. 9. Измените границы окна у Form3, сделайте их невидимыми, уберите значки максимизации, минимизации, системного меню (аналогично Form2). 10. Установите у Form3 свойство StartPosition равным CenterScreen, чтобы она отображалась в центре экрана. Установите свойство TopMost равным true для того, чтобы данная форма располагалась всё время поверх других окон. 11. Поместите на Form3 компонент Label – это будут ваши часы. Свойству Text присвойте значение 0. Выберите для своих будущих часов шрифт, размер и стиль. 12. Преобразуйте исходный файл проекта. Для этого в обозревателе решений файлов исходного кода найдите главный файл проекта (название_проекта.cpp) и добавьте перед строчкой Application::Run(gcnew Form1()); следующее: Form3 ^ F3=gcnew Form3(); F3->Show(); F3->Update(); Подключите заголовочный файл для этой формы: #include "Form3.h" 13. Поместите на Form3 компонент Timer. Его свойство Interval задает время ожидания между тактами таймера или время активации события Tick. Посмотрите, чему равно это время. Затем, в обработчик события Tick объекта timer1 добавьте обычный счетчик, который вы писали в Лабораторной №1. Значение из Label1 будет меняться по таймеру и вскоре вы увидите как он работает. 14. Для события Shown() у формы Form3 выберите обработчик timer1_Tick, который был создан для компонента timer1. Тогда при первом же запуске формы будет выполняться обработчик события Tick объекта timer1. 15. Запустите приложение и проверьте его работу. В Label1 формы с будущими часами вы увидите, как меняется значение счетчика. Обратите внимание, с каким интервалом меняется значение. Данный интервал указан в свойстве Interval таймера, помещенного на форму. Поменяйте его на другое значение и посмотрите что изменится. Покажите результат преподавателю. 16. Теперь нужно вместо обычного счетчика выводить системное время. Для этого закомментируйте весь код, который находится в обработчике события Tick объекта timer1 и добавьте другой: time_t R = time(NULL); создание переменной R типа time_t со значением из функции time() struct tm * timeinfo = localtime (&R); создание структуры для определения времени label1->Text=Convert::ToString(timeinfo->tm_hour) + ":" + Convert::ToString (timeinfo->tm_min) + ":" + Convert::ToString (timeinfo->tm_sec); вывод строки со временем в Label. Структура timeinfo, в которую мы записали текущее время, содержит поля, в которых хранятся текущие значения часа, минуты, секунды. К строке, которую мы пишем в Label, добавляются обычные точки в виде строкового значения (":") при помощи простого «сложения» (+). Вместо точек вы можете записать что-то другое, на свое усмотрение. Контрольные вопросы Как добавить в проект новую форму? Как и для чего подключаются заголовочные файлы? Что зависит от значения свойства Enabled у формы? Назовите методы формы, с которыми вы работали здесь. Поясните работу функции clock(). Чем отличается функция Show() от функции ShowDialog() для формы. 7. Как работает таймер? Поясните свойство Interval и событие Tick. 8. Расскажите как выводится время в Label. 1. 2. 3. 4. 5. 6.