КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Afx_msg void OnLButtonDown (UINT, CPoint);Четвертий крок. В карту повідомлень пишемо макрос для нашого повідомлення. У нашому прикладі це рядок ON_WM_LBUTTONDOWN () BEGIN_MESSAGE_MAP (CMyMainWnd, CFrameWnd) ON_WM_LBUTTONDOWN () END_MESSAGE_MAP () Його ім'я - це ON_ плюс ім'я повідомлення. П'ятий крок. Пишемо, що ж конкретно робить наш метод. Тут ми для прикладу написали void CMyMainWnd :: OnLButtonDown (UINT, CPoint) { AfxMessageBox ("Ліва кнопка миші"); }
Функції з префіксом Afx визначені в MFC глобально. Вони не належать конкретного класу.
Малювання простих елементів у вікні Давайте тепер подивимося, як можна в нашому вікні небудь намалювати. У Windows все малювання відбувається на так званому контексті пристрою (Device context по-англійськи). При цьому малювання відбувається однаково і для екрану, і для принтера, і для плоттера і т. п. Ви можете думати, що контекст пристрою - це як би полотно. На ньому ви малюєте, застосовуючи кисті, пір'я, шрифти та інші об'єкти. Коли вікна треба небудь перемалювати, воно отримує повідомлення WM_PAINT. Для малювання нам треба написати обробник для цієї події. Для цього ми повинні зробити кроки 3-5 з попереднього питання. Нагадаємо їх. Отже, вносимо оголошення функції в клас:
class CMyMainWnd: public CFrameWnd { ... afx_msg void OnLButtonDown (UINT, CPoint); afx_msg void OnPaint (); DECLARE_MESSAGE_MAP () };
Потім додаємо макрос в карту повідомлень: BEGIN_MESSAGE_MAP (CMyMainWnd, CFrameWnd) ... ON_WM_PAINT () END_MESSAGE_MAP ()
І, нарешті, пишемо реалізацію нашої функції: void CMyMainWnd :: OnPaint () { CPaintDC * pDC = new CPaintDC (this); pDC-> Rectangle (10,10,500,500); pDC-> Ellipse (10,130,500,500); pDC-> MoveTo (500,300); pDC-> LineTo (800,130); }
У реалізації ми робимо наступне - заводимо контекст пристрою для малювання в рядку CPaintDC * pDC = new CPaintDC (this);
Тут контест пристрої ми створюємо динамічно. Слово this означає, що ми його тут же прикріплюємо до нашого вікна (так як зараз ми знаходимося в класі CMyMainWnd). У контексту пристрою багато різних методів. Один з них - це малювання прямокутника, який ми і використовуємо. Його параметри - це координати верхнього лівого і правого нижнього кутів. Є й безліч інших методів - для малювання кола і еліпса pDC-> Rectangle (10,10,500,500); / / малювання прямокутника pDC-> Ellipse (10,130,500,500); / / малювання еліпса pDC-> MoveTo (500,300); / / перенесення початкової точки pDC-> LineTo (800,130); / / малювання лінії Запускаємо програму. У лівому кутку повинен з'явиться квадратик, еліпс, лінія.
КОНТРОЛЬНІ ЗАПИТАННЯ 1. Що ви розумієте під терміном автоматизація процесу створення додатка? 2. Що таке генератор додатка? 3. Що таке MFC AppWizard, для чого він потрібен? 4. Що таке MFC? 5. Дайте визначення API (Application Programming Interfase)? 6. Дайте визначення DLL, які функції вона виконує? 7. Як ви розумієте визначення многозадачність в Windows? 8. Як організовано цикл повідомлень в Windows? 9. Назвіть основні типи даних у Windows? 10. Назвіть переваги використання MFC? 11. Назвіть типи майстрів проектів? 12. Назвіть переваги використання майстрів проектів? 13. Що означає термін керований подіями? 14. Перерахуйте основні операції з мишею? 15. Наведіть приклади повідомлень win32, пов'язані з подіями миші? 16. Як здійснити введення за допомогою миші? 17. Які методи для роботи з мишею ви знаєте? Лекція 6 Тема: Програмування інтерфейсу користувача: кнопки, списки ПЛАН: 1. Додавання кнопки до вікна
|