Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Ed->SetWindowText(програмування); //Встановлення тексту у полі редагування 4 страница
Наступна функція – Pie(). За її допомогою будується сектор, який будується на основі обмежуючого прямокутника і є частиною еліпса, вписаного у прямокутник. Сектор формується дугою – елементом еліпса та та відрізками двох обмежуючих променів, проведених з центру еліпса. Внутрішня частина сектора зоповнюється відповідно до стилю поточного пензля.
BOOL CDC:: Pie(int UpX, int UpY, int LowX, int LowY, int StartX, int StartY, int EndX, int EndY); BOOL CDC:: Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd); Параметри функції Pie() – такі ж, як і у функції Arc(). Обробник із побудовою еліпса, дуги та сектора наведено у прикладі 4.15.
Приклад 4.15 – Обробник із побудовою еліпса, дуги та сектора void CMainWin:: OnEllipse() {CRect a(50, 50, 150, 200); CPen bluePen(PS_DASH, 1, RGB(0, 0, 255)); CBrush lblueBrush(RGB(0, 255, 255)); memDC.SelectObject(& bluePen); memDC.SelectObject(& lblueBrush); memDC.Ellipse(& a); // еліпс CRect b(200, 50, 300, 200); CPen mPen(PS_SOLID, 4, RGB(0, 0, 255)); memDC.SelectObject(& mPen); CPoint p1(250, 300), p2(150, 200); memDC.Arc(& b, p2, p1); // дуга CRect c(300, 50, 400, 200); memDC.Pie(& c, p2, p1); // сектор InvalidateRect(NULL); }
Рисунок 4.7 – Вигляд прикладу програми із використанням графічних функцій Ще один приклад, який можна навести у зв’язку із використанням гра-фічних функцій MFC, наведено у прикладі 4.16. Метою програми є побудова програми для відображення стрілкового годинника. Програму реалізовано із використанням двох класів: класу вікна та класу прикладки. Конструктор головного вікна реалізує концепцію віртуального вікна. Контроль часу здійснюється таймером, повідомлення якого надсилається програмі кожну 1 секунду. Власне, всі операції відображення годинника зосереджені в обробнику OnTimer(). Спочатку в обробнику отримується значення поточного локального часу, з якого окремо виділяють значення часу у секундах, хвилинах та годинах. Далі формується зображення годинника. Кожну секунду зображення циферблату годинника оновлюється: стирається старе положення стрілок годинника і будується нове положення стрілок. Стрілки відображуються різними кольорами: годинна – жовтим, хвилинна – зеленим, секундна – синім. Текст програми із реалізацією стрілкового годинника показаний у прикладі 4.16, а вигляд вікна – на рисунку 4.8.
Приклад 4.16. – Текст програми із стрілковим годинником
// c01.h опис класів програми class CApp: public CWinApp {public: BOOL InitInstance(); };
class CMain: public CFrameWnd {public: void OnTimer(); void OnPaint(); void OnExit(); CMain(); DECLARE_MESSAGE_MAP() private: CDC memDC; CBrush bkBrush; CBitmap vbmp; CMenu m_menu; };
// c01.cpp - Опис функцій програми include < afxwin.h> #include < math.h> #include " с01.h" #include " resource.h"
int maxX, maxY; double pi = 3.1415926535;
CMain:: CMain() {CRect r(0, 0, 370, 410); Create(NULL, " ", WS_OVERLAPPEDWINDOW, r); m_menu.LoadMenu(IDR_MENU1); SetMenu(& m_menu); maxX=GetSystemMetrics(SM_CXSCREEN); maxY=GetSystemMetrics(SM_CYSCREEN); CClientDC dc(this); memDC.CreateCompatibleDC(& dc); vbmp.CreateCompatibleBitmap(& dc, maxX, maxY); memDC.SelectObject(& vbmp); bkBrush.CreateStockObject(WHITE_BRUSH); memDC.SelectObject(& bkBrush); memDC.PatBlt(0, 0, maxX, maxY, PATCOPY); SetTimer(1, 1000, NULL); }
BOOL CApp:: InitInstance() {m_pMainWnd = new CMain; m_pMainWnd-> ShowWindow(m_nCmdShow); m_pMainWnd-> UpdateWindow(); return TRUE; }
BEGIN_MESSAGE_MAP(CMain, CFrameWnd) ON_COMMAND(ID_FILE_EXIT, OnExit) ON_WM_PAINT() ON_WM_TIMER() END_MESSAGE_MAP()
void CMain:: OnExit(){SendMessage(WM_CLOSE); }
CApp App;
void CMain:: OnPaint() {CPaintDC dc(this); dc.BitBlt(0, 0, maxX, maxY, & memDC, 0, 0, SRCCOPY); }
void CMain:: OnTimer() {char s[250]; CTime curtime = CTime:: GetCurrentTime(); struct tm *newtime; newtime=curtime.GetLocalTm(); wsprintf(s, asctime(newtime)); s[strlen(s)-1]='\0'; SetWindowText(s); int Sec=newtime-> tm_sec; int Min=newtime-> tm_min; int Hour=newtime-> tm_hour; CRect colo(0, 0, 350, 350); CPen wPen(PS_SOLID, 5, RGB(255, 255, 255)); memDC.SelectObject(& wPen); CBrush wbr(RGB(255, 255, 255)); memDC.SelectObject(& wbr); memDC.Ellipse(colo); CPen redPen(PS_SOLID, 5, RGB(255, 0, 0)); memDC.SelectObject(& redPen); memDC.Ellipse(colo.left+5, colo.top+5, colo.right-5, colo.bottom-5); memDC.Ellipse(170, 170, 180, 180); for (int k=0; k< 12; k++){memDC.Ellipse (170+160*cos(pi*k/6), 170+160*sin(pi*k/6), 180+160*cos(pi*k/6), 180+160*sin(pi*k/6)); } InvalidateRect(colo); int i=0; if(Sec> =30)i=1; int j=0; if(Min> =15)j=1; if(Min> =30)j=2; if(Min> =45)j=3; int x1, y1, x2, y2; CPen yellowPen(PS_SOLID, 15, RGB(255, 255, 0)); memDC.SelectObject(& yellowPen); if(Hour> =12)Hour=Hour-12; // перетворення 24-годинного формату годинника у 12-годинний Hour=Hour-3; // перетворення формату годинника у формат обчислень double Hr=pi*Hour/6+pi*j/16; // відлік часу враховує зміни у годинах та хвилинах x1=15*cos(Hr); y1=15*sin(Hr); memDC.MoveTo(175+x1, 175+y1); x2=100*cos(Hr); y2=100*sin(Hr); memDC.LineTo(175+x2, 175+y2); CPen greenPen(PS_SOLID, 12, RGB(0, 255, 0)); memDC.SelectObject(& greenPen); Min=Min-15; // різниця між системою координат годинника та відліком кутів складає 15 хвилин double Mn=pi*Min/30+pi*i/60; // другий доданок враховує перехід через 30 секунд x1=15*cos(Mn); y1=15*sin(Mn); memDC.MoveTo(175+x1, 175+y1); x2=150*cos(Mn); y2=150*sin(Mn); memDC.LineTo(175+x2, 175+y2); CPen bluePen(PS_SOLID, 5, RGB(0, 0, 255)); memDC.SelectObject(& bluePen); Sec=Sec-15; x1=15*cos(pi*Sec/30); y1=15*sin(pi*Sec/30); memDC.MoveTo(175+x1, 175+y1); x2=160*cos(pi*Sec/30); y2=160*sin(pi*Sec/30); memDC.LineTo(175+x2, 175+y2); } Рисунок 4.8 – Вигляд вікна програми із годинником (у заголовку вікна - поточний на момент виконання програми час: вівторок, 16 вересня 2004 року, 00: 18: 05)
4.6 Контрольні завдання
1. Пояснити порядок створення та використання курсорів, піктограм та пензлів фону у MFC-програмах. 2. Пояснити порядок виведення растрових зображень у головне вікно програми. 3. Пояснити основні функції визначення режимів виведення тексту на екран. 4. Пояснити можливості використання властивостей структури TEXTMETRIC. 5. Пояснити відмінності у застосування системних та логічних шрифтів. 6. Пояснити доцільність використання віртуальних вікон. 7. Пояснити порядок створення та застосування пір’я та пензлів. 8. Розробити MFC-програму із визначеними курсором, піктограмою та пензлем. 9. Розробити MFC-програму із визначенням властивостей системних шрифтів та виведенням текстів у головне вікно програми. Використайте шрифти ANSI_FIXED_FONT, ANSI_VAR_FONT. 10. Розробити MFC-програму із завантаженням та виведенням логічних шрифтів. 11. Розробити MFC-програму із реалізацію конструкцій віртуального вікна. Здійсніть виведення зображень у головне вікно програми. 12. Розробити MFC-програму із використанням виведення графічних функцій через віртуальне вікно. Реалізувати зміну пір’я та пензлів за допомогою меню головного вікна програми. 13. Реалізувати програму із стрілковим годинником.
|