Вибираємо вкладку File View.
Клацаємо правою кнопкою миші по напису Lab_01 files (файли проекту).
Вибираємо пункт меню Add files to Project.
У вікні, що з'явилося, в полі File name пишемо ім'я вихідного файлу (lаЬ_01.срр) і клацаємо кнопку ОК.
Відповідаємо Yes на питання про додавання файлу в проект.
На вкладці File View розвертаємо Lab_01 files, а потім Source Files. Двічі клацаємо по створеному нами файлу lab_01.cpp і відповідаємо Yes на питання про створення файлу.
Записуємо в редакторові вихідної коди текст програми:
#include "iostream.h" //Підключити бібліотеку
void main() //Головна функція
{ //Операторні дужки
int а, b; //Об’явити змінні
cin >> а; //Прочитати а з клавіатури
b = а * 5; //Привласнити b значення а*5
cout << "Result = "; //Вивести рядок
cout << b << "\n"; //Вивести результат і перевести рядок
} //Кінець програми
Компілюємо і застосування, натискує клавішу F7. Аби запустити застосування, натискуємо комбінацію клавіш Ctrl+F5 або клацаємо по відповідному значку на панелі інструментів.
Тестуємо програму: вводимо ціле число і натискуємо Enter.
Отримуємо правильний результат (а * число).
Результат роботи програми

Створення застосування Win32
Вибираємо пункт головного меню File -> New -> Project -> Win32 Application.
Встановлюємо ім'я (lab_01_win32) і дорогу так само, як і при створенні консольного застосування.
Клацаємо кнопку ОК.
Вибираємо An empty project (порожній проект) клацаємо кнопку Finish, потім ОК.
Компілюємо і намагаємося запустити застосування.
Бачимо на екрані повідомлення про неможливість виконати програму.
Не дивлячись на всі наші зусилля, програма не працює. А все тому, що ми створили порожній проект, який не містить програмного коду. Тому додаємо в проект файл, як це було зроблено в п.3 попереднього розділу. Потім прописуємо в цьому файлі наступний код:
#include "afxwin.h" //MFC Основні і стандартні компоненты
class CMainWnd : public CFrameWnd {
public : CMainWnd(); //Конструктор за умовчанням
};
CMainWnd::CMainWnd()
{
Create (NULL, "lab_01_win32", WS_OVERLAPPEDWINDOW, rectDefault
NULL, NULL); //Створити вікно програми
}
class CMyApp : public CWinApp {
public : CMyApp(); //конструктор за умовчанням
virtual BOOL InitInstance(); //стандартна ініціалізація };
CMyApp::CMyApp() //конструктор головного класу застосування
{}
BOOL CMyApp::InitInstance() //стандартнаи ініціалізація {
m pMainWnd=new CMainWnd(); //створити клас вікна ASSERT(m pMainWnd); //проверить його правильність
m pMainWnd->ShowWindow(SW SHOW); //Показати вікно m pMainWnd->UpdateWindow(); //Обновит вікно
return TRUE; //Вернути , що все нормально
};
CMyApp theApp; //запустити застосування
Але і це ще не все. Тепер потрібно набудувати проект так, щоб він використовував MFC. MFC знаходиться в DLL файлах. І якщо наш проект використовуватиме MFC, ми повинні це вказати для того, щоб компілятор міг підключити необхідні файли LIB із засланнями на функції в DLL. Якщо цього не зробити, то проект не збереться. Аби наша програма запустилася, потрібно:
Вибрати пункт головного меню Project -> Settings...
У полі Settings For вибрати пункт All Configurations
У полі Microsoft Foundation Classes вибрати пункт Use MFC in Shared DLL.
Натискувати кнопку ОК.
І лише після цього ми зможемо відкомпілювати і запустити наше застосування - порожнє вікно із заголовком "lab_01_win32". Результат на малюнку:

Створення MFC застосування
Вибираємо пункт головного меню File -> New -> Project -> MFC AppWizard(exe).
Встановлюємо ім'я (lab_01_mfc) і дорогу так само, як і при створенні консольного застосування.
Клацаємо кнопку ОК.
Вибираємо Single Document (один документ) і клацаємо кнопку Next «до перемоги». Потім клацаємо кнопку Finish, потім ОК.
Компілюємо і запускаємо застосування.
Бачимо на екрані вікно застосування з набором стандартних пунктів меню і стандартною ж панеллю інструментів.
Тестуємо застосування: багато пунктів меню і кнопки на панелі інструментів не працюють, оскільки для них не прописані методи.
Закриваємо застосування і на вкладці Class знаходимо клас вигляду (у нашому випадку це пункт Clab_01_mfcView).
У цьому класі знаходимо метод OnDraw і замінюємо його наступним кодом:
void CLab 01 mfcView::OnDraw(CDC* pDC)
{
CString welcom = "Привіт, моє вікно!”; //Объявить змінну
CLab 01 mfcDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(0,0,welcom);//Вивести текст у вікно
}
Тепер це застосування виводитиме у вікно рядок "Привіт, моє вікно!”. Початок рядка виводиться в координати (0, 0) за допомогою методу TextOut. Результат на малюнку:

Робота № 2
Реалізація простої програми на VC++, з використанням графічного інтерфейсу і бібліотеки MFC (Windows Application на основі діалогового вікна).
Мета роботи:
Навчитися розробляти і реалізовувати прості програми на мові VC++. Отримати практичні навики роботи по використанню графічного інтерфейсу. Навчитися пов'язувати змінні і методи з елементами діалогового вікна.
Створюємо порожній проект Console Application і реалізуємо в нім програму по обчисленню вартості поїздки на автомобілі
Для цього виконуємо ті ж дії, що і в лабораторній роботі № 1, лише при створенні проекту вибираємо Win32 Console Application.
Результат роботи програми
Потім у вихідний файл поміщаємо наступний код:
#include "iostream.h"
void main()
{
float km //Километраж
Litres, //Расход палива (л/100км)
Price; //Ціна одного літра палива
cout << "\n Way = "; //Вивести рядок
cin >> km; //Прочитати кілометраж
cout << "\n Litres = ";
cin >> Litres; //Прочитати витрата палива
cout << "\n Price = ";
cin >> Price; //Прочитати ціну одного літра
//Вивести результат
cout << "\n Result = " << (km/100)*Litres*Price << "\n";
}
Створюємо застосування за допомогою MFC AppWizard(exe) з діалоговим вікном як головний і реалізуємо в нім програму з п.1
Створюємо новий проект як завжди.
Вибираємо MFC AppWizard(exe).
У наступному діалоговому вікні вибираємо типа застосування. У нашому випадку це буде Dialog Based.
За допомогою миші і відповідної панелі інструментів створюємо на формі потрібні нам елементи: написи (Static Text), однорядкові редактори для введення-виведення даних (Edit Box) і кнопки. Аби розмістити компонент на формі (діалозі), потрібно клацнути по цьому компоненту на панелі Controls ; потім клацнути в тому місці форми, де потрібно розмістити компонент. Якщо панелі Controls на екрані чомусь немає, то дістаємо її таким чином: клацаємо правою кнопкою миші по головному меню і встановлюємо прапорець напроти пункту Controls.
Static Text
Після розміщення цього компонента на формі, клацаємо по ньому правою кнопкою і в полі Caption пишемо потрібне нам слово. Аби при виконанні програми правильно відображувалися символи російського алфавіту, потрібно на вкладці ResourceView відкрити теку Dialog і клацнути правою кнопкою по потрібному діалогу (у нашому випадку - IDD_LAB_02_2_DIALOG). Потім вибрати Properties (Властивості), в полі Language встановити російську мову і закрити діалог або натискувати клавішу Enter.
Edit Box
Для того, щоб ми могли працювати з даними, що вводяться в цей елемент, потрібно з цим елементом зв'язати змінну. А для цього викликаємо ClassWizard з меню View. Переходимо на вкладку Member Variable, виділяємо потрібний елемент і клацаємо по кнопці Add Variable.
У полі Member Variable Name вписуємо ім'я змінної, а в полі Variable Type вибираємо типа змінної. Ми працюватимемо з дійсними числами, тому вибираємо float.
Button
Поміщаємо на форму кнопку «Розрахувати», по натисненню на яку i проведений потрібний нам розрахунок. Для того, щоб програма зрозуміла, що на цю кнопку натискували, потрібно з цією кнопкою зв'язати метод (подія), яке відбувається після натиснення на кнопку. Це можна зробити: наприклад, двічі клацнувши по кнопці. Тоді відкриється редактор вихідної коди, а курсор буде встановлений на ділянку, що цікавить нас, куди ми впишемо наступний текст:
void CLab 02 2Dlg::OnButton1() //Подія для кнопки «Розрахувати»
{
UpdateData(1); //Получити дані з редакторів m_edResult = (m edWay/100)*m edLitres*m edPrice;
UpdateData(0); //Вивести дані в редактори
}
Тут функція UpdateData() або записує дані з редактор! змінні, або виводить значення змінних в редактори, залежно від отримуваного параметра: 1 - отримати дані, 0 - вивести дані.
Удосконалюємо програму з п.2, додаючи підрахунок вартості декількох поїздок
Додаємо елемент для введення даних і пов'язуємо з ним змінну m_edNum. А формула буде такою:
m_edResult = (m_edWay/100)*m_edLitres*m_edPrice*m_edNum;
Удосконалити отриману програму, додавши кнопку, по натисненню на яку в редактори виводяться заздалегідь визначені значення (Відстань = 240 км., Витрата = 8,4 л/100км, Ціна = 16,5)
Додаємо кнопку «За умовчанням» і пов'язуємо з нею подію. Додаємо код:
void CLab 02 2Dlg::OnDefault()
{
medWay = 240; //Відстань
m_edLitres = 8.4; //Расход
m_edPrice = 16.5; //Ціна
m_edNum = 1; //Кількість поїздок
m_edResult = (m edWay/100)*m edLitres*m edPrice*m edNum; UpdateData(0); //Вивести дані в редактори
}
В результаті добросовісного виконання всіх пунктів отримаємо приблизно такий результат:
Робота № 3
Створення графічного інтерфейсу на базі діалогового вікна VC++, з використанням перемикачів, прапорців. Реалізація алгоритмів, що розгалужуються.
Мета роботи:
Навчитися розробляти і реалізовувати програми на основі алгоритмів, що розгалужуються, з використанням прапорців і перемикачів, а також операторів if і switch. Отримати практичні навики роботи по використанню різних елементів графічного інтерфейсу і операторів мови VC++.
Вирішити завдання: У гаражі є 4 різних автомобіля (ВАЗ, Газель, ГАЗ-66, Мерседес), кожен автомобіль має свою витрату палива на 100 км. дороги, а також свою вартість палива. Програма повинна обчислювати вартість поїздки для заданої машини. Реалізувати, використовуючи прапорці і перемикачі, операторів if і switch
Розміщуємо на формі чотири перемикачі (Radio Button): ВАЗ, Газель, ГАЗ-6 6 і Мерседес. Для кожного з цих перемикачів нам потрібно визначити подію - в нашому випадку це буде клацання лівою кнопкою миші. Визначити подію можна, наприклад, так:
Клацнути правою кнопкою по перемикачу ВАЗ.
Вибрати пункт Events.
У полі Class or object to handle вибрати IDC_RADI01.
У полі New Windows Massages/Events вибрати BN_CLICED.
Клацнути по кнопці Add and Edit.
У полі Member function name вписати ім'я події (у нашому випадку хай буде ONVAZ).
Клацнути кнопку ОК.
Елемент Radio Button - це залежний перемикач. Якщо на формі розмістити декілька таких елементів, то при клацанні на будь-якому з них даний елемент буде «включений», а останні автоматично «вимкнуться».
У редакторові вихідної коди впишемо наступне:
void CLab 03Dlg::OnVAZ()
{
m_edLitres = 6.5; //Расход палива
m_edPrice = 17.5; //Цена одного літра
UpdateData(0); //Вывести дані в редактори
}
Всі ці дії повторимо для кожного перемикача, замінюючи імена подій на відповідних для інших автомобілів і змінюючи значення змінних.
Розрахунок поїздки виконується так само, як і в попередній лабораторній роботі.
Удосконалити отриману в першому пункті програму, додавши режим заповнення даних для кожного автомобіля
Розміщуємо на формі чотири перемикачі: ВАЗ, Газель, ГАЗ-66, Мерседес. Аби подровнять перемикачі, клацаємо на одному з них, а потім, натискує і утримуючи клавішу Ctrl, клацаємо по черзі на останніх. Вибираємо в головному меню пункт Layout -> Align -> Left. Таким чином, вирівнюємо елементи по лівому краю. Далі вибираємо Layout -> Space Evenly -> Down, встановлюючи, таким чином, однаковий інтервал між елементами.
Далі клацаємо правою кнопкою по першому перемикачу (ВАЗ) і вибираємо пункт Properties. Встановлюємо прапорець Group. Така установка означає, що перемикач ВАЗ є першим елементом групи перемикачів.
Події для перемикачів встановлюємо також як і попередньому завданню, лише у вихідний код додаємо рядок, який включає відповідний перемикач, оскільки тепер всі перемикачі належать групі:
void CLab 03Dlg::OnVAZ()
{
m_edLitres = 6.5; //Расход палива
m_edPrice = 17.5; //Цена одного літра
m_radio = 0; //Включить перший перемикач
UpdateData(0); //Вывести дані в редактори
}
Додаємо подію для кнопки РЕЗУЛЬТАТУ і пишемо код:
void CLab 03 2Dlg::OnResult()
{
UpdateData(1); //Получить дані з редакторів
M_edResult = (m edWay/100)*m_edLitres*m edPrice*m_edNum;
UpdateData(0); //Вывести дані в редактори
}
Удосконалити отриману програму: додати вантажопідйомність автомобілів і можливість вказувати вагу вантажу, що перевозиться. Програма повинна розрахувати оптимальний варіант за вартістю перевезення вантажу
Додаємо ще двох редакторів для введення даних: Вантажопідйомність (m_edTonnage) і Вага вантажу (m_edWeight). Ці величини вимірюватимемо в кілограмах.
Оскільки користуватися масивами і структурами ми навчимося лише в лабораторній роботі № 4, то поступимо таким чином: аби мати можливість порівняти результати, створимо чотирьох редакторів і розташуємо їх відповідним чином напроти найменувань автомобілів. А змінні назвемо так: m_ResultVAZ, m_ResultGazel, m_ResultGAZ66 і m_ResultMers. Тоді в обробник події натиснення кнопки РЕЗУЛЬТАТУ (з врахуванням умови завдання) потрібно буде вписати такий код:
void CLab 03 3Dlg::OnResult()
{
float x; //Объявить змінну
UpdateData(1); //Получити дані з редакторів
if ( m_edTonnage != 0) //якщо вантажопідйомність більше нуля {
// Обчислити к-ть поїздок
M_edNum = int(m_edWeight / m_edTonnage); x = float(m_edWeight)/ float (m_edTonnage);
if ( m_edNum < x) m_edNum = m_edNum++;
//---Обчислити вартість поїздок
switch (m_radio)
{
case 0: m_ResultVAZ = (m_edWay/100)*m_edLitres*m_edPrice*m_edNum;
break;
case 1: m_ResultGazel = (m_edWay/100)*m_edLitres*m_edPrice*m_edNum;
break;
case 2: m_ResultGAZ66 = (m_edWay/100)*m_edLitres*m_edPrice*m_edNum;
break;
case 3: m_ResultMers = (m_edWay/100)*m_edLitres*m_edPrice*m_edNum;
break;