- •Лекція №1 Тема: Мова програмування: загальні поняття та означення. Загальні поняття візуального програмування план
- •2. Інтегроване середовище розробки
- •3. Основні поняття візуального програмування
- •4. Етапи розв’язування задачі на еом
- •Лекція № 2
- •Поняття та призначення відладчика програми.
- •Інтегроване середовище розробки програм. Керовані і некеровані програми
- •Поняття та призначення відладчика програми
- •3. Інтегроване середовище розробки програм. Керовані і некеровані програми
- •Контрольні запитання
- •Лекція 3
- •1 Консольний додаток
- •2. Діалоговий додаток
- •3 Багатовіконний додаток Windows
- •4.Одновіконний додаток
- •Контрольні запитання
- •Лекція № 4
- •2. Оголошення або специфікація класу
- •3. Реалізація класу
- •Контрольні запитання
- •Лекція 5
- •1. Програмне середовище Windows
- •2. Основи програмування під Windows
- •3. Типи даних в Windows
- •Переваги використання mfc (самостійно)
- •5. Архітектура додатка
- •6. Типи майстрів проектів (самостійно)
- •7. Обробка подій в додатках класу mfc
- •Повідомлення миші
- •Введення за допомогою миші
- •Контрольні запитання
- •Лекція 6 Тема: Програмування інтерфейсу користувача: кнопки, списки план:
- •2. Обробка натискання кнопки
- •3. Клас cListBox
- •2. Завдання реакції на вибір в ComboBox
- •3. Операції з елементами
- •4. Діалог в якості головного вікна
- •Контрольні запитання
- •Лекція 8 Тема: Програмування інтерфейсу користувача: меню, діалогові вікна план
- •2. Створення обробника меню
- •3. Додавання діалогового вікна
- •4. Додавання діалогу за допомогою класу
- •5. Обмін даними з діалогом
- •4. Назвіть послідовність етапів створення діалогу за допомог класу?
- •2. Забезпечення видалення, редагування, додавання записів в бд
- •3. Забезпечення сортування та фільтрації записів з бд.
- •4.Стандарт odbc і dao
- •Контрольні запитання
2. Створення обробника меню
Якщо ви запустите попередній проект, то меню Dialog буде сірим:
Так виходить тому, що у нашого вікна немає обробника. Додамо його. Для цього внесіть в наш код такі зміни:
CMyMainWnd ()
{/ / Конструктор
LoadFrame (IDR_MENU1);
} / / Вводимо функцію для обробки клацання по меню
void OnMyMenuDialog ();
...
Потім напишіть реалізацію цієї функції в кінці нашого файлу:
... void CMyMainWnd :: OnMyMenuDialog ()
{
AfxMessageBox ("Menu!"); / / Показ MessageBox'а
}
Після цього нам треба зв'язати ідентифікатор нашого меню із написаної вище функцією. Для з'ясування, який ідентифікатор має меню, перейдіть на вкладку ResourceView, потім подвійним клацанням на меню IDR_MENU1 відкрийте редактор меню і подвійним клацанням на пункті меню Dialog відкрийте його властивості:
Звідси видно, що ідентифікатор для меню - це ID_MYMENU_DIALOG. Для зв'язування його з нашої функцією додайте наступний код:
BEGIN_MESSAGE_MAP (CMyMainWnd, CFrameWnd) / / початок карти повідомлень
ON_COMMAND (ID_MYMENU_DIALOG, OnMyMenuDialog)
/ / зв'язування ідентифікатора з функцією
END_MESSAGE_MAP () / / кінець карти повідомлень
Цей фрагмент коду можна додати, скажімо, відразу після оголошення класу CMyMainWnd (не додайте його всередину якого-небудь класу. Ці рядки треба помістити поза класів). Зверніть увагу на параметри макросу BEGIN_MESSAGE_MAP. Перший - показує, для якого класу ми пишемо нашу карту повідомлень. Другий - вказує батьківський клас для нашого класу, тобто клас, який буде обробляти ті повідомлення, які не може обробити наш клас CMyMainWnd.
Ми ввели карту повідомлень для класу CMyMainWnd. Її ще треба визначити в самому класі. Для цього в кінці класу CMyMainWnd імпользуется DECLARE_MESSAGE_MAP ();};
Готово! Запускайте програму, вибирайте меню Dialog і милуйтеся на MessageBox:
3. Додавання діалогового вікна
У цьому уроці ми додамо ще один ресурс - діалогове вікно. Воно буде з'являтися при виборі нашого меню Dialog.
Зайдіть в меню Insert, потім у підменю Resource і далі в діалоговому вікні виберіть пункт Dialog і натисніть на кнопку New. З'явиться діалогове вікно в режимі конструктора:
Тепер напишемо код, за яким вікно буде з'являтися. Додайте наступні рядки в обробник нашого меню (рядок AfxMessageBox ("Menu!"); Можна видалити):
void CMyMainWnd :: OnMyMenuDialog ()
{
CDialog dlg (IDD_DIALOG1);
dlg.DoModal ();
}
Запустіть проект. Тепер при виборі меню у нас з'явиться наше діалогове вікно.
Код можна злегка змінити. Так, щоб програма знала, що ми натиснули в нашому діалозі - кнопку OK або Cancel:
void CMyMainWnd::OnMyMenuDialog()
{
CDialog dlg(IDD_DIALOG1);
if(dlg.DoModal()==IDOK)
AfxMessageBox("Кнопка OK");
else AfxMessageBox("Кнопка Cancel");
}
Під'єднуємо майстер ClassWizard
В Visual C + + крім майстрів для створення простого додатка є такий чудовий майстер як ClassWizard. Він призначений для роботи з класами - для добавки в них методів і властивостей, для додавання змінних до елементів діалогового вікна і для інших цілей. ClassWizard автоматично під'єднається до вашого проекту, якщо ви запускаєте який-небудь майстер для створення заготовки для вашого застосування. Ми ж пишемо наші перші програми з MFC без майстрів, тому нам треба майстер ClassWizard під'єднати. Частина класів у нас вже написана без нього. Якщо ми хочемо в подальшому використовувати ClassWizard і для вже написаних класів, то ми повинні внести в них деякі зміни (тобто додати код, який вніс би ClassWizard, якби писав заготовку для наших класів сам). Зробимо це.
Вставте наступний код у protected-секцію класу CMyMainWnd:
class CMyMainWnd: public CFrameWnd
{
protected: / / {{AFX_MSG (CMyMainWnd) / /}}
AFX_MSG ...
Потім вставте код в public-секцію класу CMyMainWnd:
public: / / {{AFX_VIRTUAL (CMyMainWnd) / /}} AFX_VIRTUAL ...
І, нарешті, в карту повідомлень класу CMyMainWnd:
BEGIN_MESSAGE_MAP (CMyMainWnd, CFrameWnd) / / {{AFX_MSG_MAP (CMy MainWnd) / /}} AFX_MSG_MAP ... END_MESSAGE_MAP ()
Доданий нами код буде компілятором ігноруватися (це ж коментар), але для ClassWizard він дуже важливий. Саме між доданими нами рядками ClassWizard і буде писати щось своє.
Після цього натисніть комбінацію клавіш Ctrl + W для виклику ClassWizard. Так як файлу для нього немає (з розширенням *. Clw), то він запропонує вам його створити:
Відповідайте Так. У вікні спочатку натисніть на Add All (для під'єднання існуючих класів), і потім на OK:
З'явиться вікно ClassWizard.
Зверніть увагу, що в випадаючому списку Class Name буде наш клас CMyMainWnd. Це тому, що саме в нього ми додали рядки типу
/ / {{AFX_ ... (CMyMainWnd) / /}} AFX_ ...
Натискаємо OK для закриття ClassWizard. Якщо він нам буде потрібен, то викликаємо його комбінацією клавіш Ctrl + W.
Зверніть увагу, що в папці вашого проекту з'явиться файл ClassWizard'а (з розширенням *. Clw):
