- •Задача 1. Конвертер
- •Задача 2. Фунты-килограммы
- •Задача 3. Сила тока.
- •Задача 4. Сопротивление
- •Задача 5. Кафе
- •Задача 6. Любимый напиток
- •Задача 7. Электроэнергия
- •Задание 8. Осаго
- •Задание 9.Просмотр иллюстраций
- •Задача 10. Калькулятор
- •Задача 11. Калькулятор-2
- •Задача 12.Секундомер
- •Задача 13. Угадай число
- •Задание 14.Угадай число-2
- •Задание 15.Запуск Internet Explorer
- •Задание 16.Конвертор
- •Задание 17.Конвертор 2
- •Задание 18.Погода
- •Задание 19.Средняя температура
- •Задание 20. Простая база данных
- •Задание 21. Редактор текста
- •Задание 22. Приветствие
- •Задача 23. Олимпийский флаг
- •Задание 24. Диаграмма
- •Задача 26. Круговая диаграмма.
- •Задача 27. Просмотр иллюстраций.
- •Задача 28 .Часы
- •Задача 29. Пинг понг.
- •Задача 30. Полет в облаках
- •Задача 31.Баннер
- •Задача 32. Фоновый рисунок
- •Задача 33. Wav
- •Задача 34. Mp3 Player
- •Задача 35.Воспроизведение midi
- •Задача 36.Compact Disk Player (версия 1)
- •Задача 37.Compact Disk Player (версия 2)
- •Задача 38.VideoPlayer
- •Задача 39. Анимация
- •Задача 40. Записная книжка
- •Задача 41 Магазин
- •Задача 42. Ежедневник
- •Задача 43. Сапер
- •Часть 1. Примеры и задачи
- •Часть 1. Примеры и задачи
- •Задача 44 Игра 15
- •Часть 1. Примеры и задачи
- •Задача 45. Игра "Собери картинку" (Puzzle)
- •Задача 46 Игра "Парные картинки"
- •Задача 47. Экзаменатор
- •Задача 48. Экзаменатор-2
- •Задача 49. Календарь
- •Задача 50. Будильник
- •Задача 51. Очистка диска
- •Задача 52.Печать
- •Задачи для самостоятельного решения Задача 1. Скидка
- •Задача 2.Доход по вкладу
- •Задача 3. Таблица умножения
- •Задача 4.Поездка на автомобиле
- •Задача 5.Стоимость разговора
- •Задача 6. Стеклопакет
- •Задача7. Калькулятор
- •Задача 8. Электроэнергия
- •Задача 9. Добрый день
- •Задача 10. Часы
- •Задача 11. Узоры
- •Задача 12. Курс доллара
- •Задача 13. Диаграмма
- •Задача 14. Домашние животные
- •Задача 15. Кораблик
- •Задача 16. Сапер
- •Задача 17 .Экзаменатор
- •Задача 18. База данных "Расходы"
Задача 50. Будильник
После того как пользователь задаст сообщение, время и сделает щелчок на кнопке ОК, окно программы исчезает с экрана (сворачивается). В установленное время окно Будильник появляется на экране (Рис. 60)
Рис 60
Вывод: При выполнении данного задания мы научились создавать программу, которая в последующем отображается в области панели задач.
Листинг
class TForml : public TForm { __published: TTimer *Timerl; TEdit *Editl; TButton *Buttonl; // индикатор текущего времени TGroupBox *GroupBox2; TLabel *Labell; // часы TLabel *Label2; //двоеточие TLabel *Label3; // минуты Игры и другие полезные программы 249 // индикатор времени сигнала TGroupBox *GroupBoxl; TLabel *Label4; // часы TLabel *Label5; //двоеточие TLabel *Label6; // минуты // кнопки установки времени будильника TUpDown *UpDownl; // часы TUpDown *UpDown2; // минуты TPopupMenu *PopupMenul,- // контекстноеменю TMenuItem *N1; // команда Восстановить TMenuItem *N2; // команда Закрыть void fastcall ButtonlClick(TObject *Sender); void fastcall TimerlTimer(TObject *Sender); void fastcall UpDownlClick(TObject *Sender, TUDBtnType Button); void fastcall UpDown2Click(TObject *Sender, TUDBtnType Button); void fastcall NIClick(TObject *Sender); void fastcall N2Click(TObject *Sender); // *** определениеэтих функций вставлено сюда вручную *** // создать и поместить значок на System Tray void fastcall CreateTrayIcon(int n, AnsiString Tip); // удалить значок из System Tray void fastcall DeleteTrayIcon(int n); protected: // процедура обработки сообщения WM_MYTRAYNOTIFY, // которое генерирует значок, находящийся на System Tray void fastcall MYTRAYNOTIFY(TMessage &Message); 250 Часть 1.Примерыи задачи BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_MYTRAYNOTIFY, TMessage, MYTRAYNOTIFY) END_MESSAGE_MAP(TControl) private: public: fastcall TForml(TComponent* Owner); // *** модуль формы AlarmForm.cpp *** •include "DateUtils.hpp" #include "ShellAPI.hpp" // для доступа к Shell__NottifyIcon #include "mmsystern.hpp" // для доступа к PlaySound int cHour, cMinute; // время наиндикаторе int alrHour, alrMinute; // времясигнала // преобразует целое в строку с ведушуал нулем AnsiString fastcall mm(int m) { if (m <= 9) return "0" + IntToStr(m); else return IntToStr(m); / констуктор формы fastcall TForml::TForml(TComponent* Owner) : TForm(Owner) // отобразить текущее время Игры и другие полезные программы 251 cHour = HourOff Now() ); Labell->Caption = IntToStr(cHour) , • cMinute = MinuteOf( Now() ); Label3->Caption = mm(cMinute); / / добавить значок на System Tray void fastcall TForml::CreateTrayIcon(int n, AnsiString Tip) { TNotifylconData nidata; /* заполнить структуру nidat, полякоторой определяют значок на System Tray */ nidata.cbSize = sizeof(TNotifylconData); nidata.hWnd = Forml->Handle; // окно приложения, которое // представляет значок nidata.uID = n; // номер значка (одноприложение может // разместить на панели // несколько значков nidata.uFlags = NIF_ICON + NIF_MESSAGE + NIF_TIP; /* при позиционировании указателя мыши на на значке, генерируется определенное программистом событие WM_MYTRAYNOTIFY ( см. AlarmMainForm.h) */ nidata.uCallbackMessage = WM_MYTRAYNOTIFY; // значок nidata.hlcon = Application->Icon->Handle; // посказка (всплывающий текст) StrPCopy(nidata.szTip,Tip); Shell_NotifyIcon(NIM_ADD, &nidata); // добавитьзначок 9 3ак. 1241 252 Часть 1.Примерыи задачи // удалить картинку с SystemTray void fastcall TForml::DeleteTraylcon(int n) TNotifylconData nidata; nidata.cbSize = sizeof(TNotifylconData); nidata.hWnd = Forml->Handle; nidata.ulD = n,- // номер значка, который надо убрать // (одноприложение может разместить на // панели несколько значков) Shell_NotifyIcon(NIM_DELETE, &nidata); // щелчок на кнопке ОК void fastcall TForml::ButtonlClick(TObject *Sender) { AnsiString st; alrHour = UpDownl->Position; alrMinute = UpDown2->Position; if ( ( alrHour == cHour ) && (alrMinute <= cMinute) ( alrHour < cHour ) ) { AnsiString st; int r; st.printf( "Сейчас %i:%1\пБудильник установлен на %i:%i", cHour,cMinute,alrHour,alrMinute r = MessageDlg(st, mtWarning, TMsgDlgButtons() « mbOK «mbCancel, 0) ; if (r == mrCancel) return; Игры и другие полезные программы 253 st = "Будильник. " + IntToStr(alrHour) + ":" + mm(alrMinute); CreateTraylcon(1,st); Forml->Hide(); // сигналоттаймера void fastcall TForml::TimerlTimer(TObject *Sender) if ( Forml->Visible ) // окнопрограммынаэкране if ( HourOf( Now() ) != cHour) { cHour = HourOf( Now() ); Labell->Caption = IntToStr(cHour); if ( MinuteOf( Now() ) != cMinute) { cMinute = MinuteOf( Now() ); Label3->Caption = mm(cMinute); // показать/скрытьдвоеточие Label2->Visible = ! Label2->Visible; else TDateTime t = Now(); if ( (alrHour == HourOf(t) ) && (alrMinute == MinuteOf(t)) ) PlaySoundCnotify.wav", 0, SND_ASYNC) ; DeleteTraylcon(1); // убратьзначокс System Tray Forml->Show(); } } } 254 Часть 1. Примерыизадачи // щелчокнакнопкекомпонента UpDownl (часы) void fastcall TForml::UpDownlClick(TObject *Sender, TUDBtnType Button) { Label4->Caption = IntToStr(UpDownl->Position); // щелчокнакнопкекомпонента UpDown2 (минуты) void fastcall TForml::UpDown2Click(TObject *Sender, TUDBtnType Button) { Label6->Caption = mm(UpDown2->Position); // обработкаопределенногопользователемсообщения // WM_MYTRAYNOTIFY void fastcall TForml:rMYTRAYNOTIFY(TMessage ^Message) { TPoint p; i f ( Message.LParam == m_RBUTTONDCWN ) { GetCursorPos(&p); SetForegroundWindow(Application->MainForm->Handle); Forml->PopupMenul->Popup(p.x,p.y); // командаВосстановить void fastcall TForml::NlClick(TObject *Sender) { Timerl->Enabled = false; Forml->Show(); DeleteTraylcon(1); // убратьзначокс System Tray Игрыидругиеполезныепрограммы 255 // командаконтекстногоменюЗакрыть // (завершениеработыпрограммы) void fastcall TForml::N2Click(TObject *Sender) { Forml->DeleteTrayIcon(l); // убратьзначокс System Tray Forml->Close();
