
Практична робота №1
Тема: Інтегроване середовище Visual C++ 6.0 і робота з консольними додатками.
Мета: опанувати навичками роботи в середовищі Visual C++ 6.0. навчитись створювати проекти.
Теоретичні відомості:
Створення нового проекту. Для створення нового проекту типу «консольний додаток» виконати такі дії:
виконати в рядку меню головного вікна команду File/New...
у вікні діалогу New вибрати вкладку Projects:
вибрати тип проекту: Win32 Console Application;
ввести ім’я проекту в полі Project Name, наприклад, pract1;
в полі Location ввести ім’я каталогу (повний шлях до нього) для розміщення майбутніх файлів проекту (якщо вказаний вами каталог відсутній, то він буде створений автоматично); шлях до майбутнього проекту можна вибрати клацнувши кнопку, розташовану праворуч від поля Location
клацнути кнопку ОК.
Запуститься вбудований майстер додатків: Application Wizard, який відкриє вікно диалогу Win32 Console Application — Step1 of 1 з пропозицією визначитись, який підтип консольного додатку бажаєте створити :
виберіть тип: An empty project (порожній проект);
і клацніть кнопку Finish.
Після цього зявиться вікно: New Project Information (інформация про новий проект) з специфікаціями проекту і інформацією про каталог, в якому буде розміщений проект, що створюється:
клацнути кнопку ОК.
У папці pract1, що створена майстром додатків, - файлы pract1.dsw, pract1.dsp, pract1.opt, pract1.ncb і папка Debug (або Release — в залежності від конфігурації проекту). Короткий опис кожного з файлів:
pract1.dsw — файл робочої області проекту, використовується всередині інтегрованого середовища розробки. Він об’єднує всю інформацію про проекти, що входять в дану робочу область.
pract1.dsp — проектний файл, використовується для побудови (building) окремого проекту або підпроекту.
pract1.opt — файл, що має опції робочої області проекту. Завдяки цьому файлу при кожному відкритті робочої області проекту усі параметри Developer Studio, вибрані під час останнього сеансу роботи з даною робочоюй областю, будуть відновлені.
pract1.ncb — службовий файл. Він створюється компілятором і має інформацію, яка використовується в инструменті інтегрованого середовища під назвою ClassView. Панель ClassView знаходиться у вікні Project Workspace і показує усі класи C++, для яких доступні визначення в межах даного проекту, а також усі елементи цих класів. Debug — папка, в яку будуть вміщуватися файли, що формуються компілятором і збиральником. З цих файлів нас цікавить лише один — виконуваний файл, що має розширення *.ехе.
Лістинг програми:
Console
#include <stdio.h>
#include <conio.h>
void main(void)
{
printf("\n Practical work 1 \n");
while(!kbhit());
}
Application
#include<windows.h>
#include<tchar.h>
const wchar_t szTitle[]=_T("ЗПЗС-114 Пр№1 Вариницький С.В.");// Текст строки заголовка
const wchar_t szWindowClass[]=_T("ЗПЗС-114 Пр№1 Вариницький С.В.");// имя класса главного окна
HINSTANCE hInst;// текущий экземпляр
//Создаём прототип функции окна, которая будет определена ниже
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM MyRegisterClass(HINSTANCE hInstance);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
HWND hWnd;
MSG lpMsg;
if(!MyRegisterClass(hInstance)) //Если не удалось зарегистрировать класс окна - выходим
return 0;
hWnd = CreateWindow(szWindowClass, //Имя программы
szTitle, //Заголовок окна
WS_OVERLAPPEDWINDOW, //Стиль окна - перекрывающееся
100, //положение окна на экране по х
100, //положение по у
300, //ширина
200, //высота
(HWND)NULL, //идентификатор родительского окна
(HMENU)NULL, //идентификатор меню
(HINSTANCE)hInstance, //идентификатор экземпляра программы
(LPVOID) NULL); //отсутствие дополнительных параметров
ShowWindow(hWnd, nCmdShow);//Выводим окно из памяти на экран
UpdateWindow(hWnd);//Обновим содержимое окна
//Цикл обработки сообщений
while(GetMessage(&lpMsg, hWnd, 0, 0)) { //Получаем сообщение из очереди
TranslateMessage(&lpMsg); //Преобразует сообщения клавиш в символы
DispatchMessage(&lpMsg); //Передаёт сообщение соответствующей функции окна
}
return (lpMsg.wParam);
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASS w; //создаём экземпляр структуры WNDCLASS //И начинаем её заполнять
//w.cbSize = sizeof(WNDCLASS);
w.style = CS_HREDRAW|CS_VREDRAW; //стиль - перерисовываемое по х и по у
w.lpfnWndProc = WndProc; //указатель на функцию окна
w.cbClsExtra = 0;
w.cbWndExtra = 0;
w.hInstance = hInstance; //идентификатор текущего приложения
w.hIcon = 0; //иконки у нас не будет пока
w.hCursor = LoadCursor(NULL, IDC_ARROW); //загружаем курсор
w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //цвет фона окна
w.lpszMenuName = 0; //и меню пока не будет
w.lpszClassName = szWindowClass; //имя программы - объявлено выше
return RegisterClass(&w);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT messg, //Функция окна
WPARAM wParam, LPARAM lParam)
{
HDC hdc; //создаём контекст устройства
PAINTSTRUCT ps; //создаём экземпляр структуры графического вывода
switch(messg)//Цикл обработки сообщений
{
case WM_PAINT ://сообщение рисования
hdc=BeginPaint(hWnd, &ps);//начинаем рисовать
TextOut(hdc, 80,75, _T("Практична робота №1"), 19);
ValidateRect(hWnd, NULL);//обновляем окно
EndPaint(hWnd, &ps);//заканчиваем рисовать
break;
case WM_DESTROY://сообщение выхода - разрушение окна
PostQuitMessage(0); //Посылаем сообщение выхода с кодом 0 - нормальное завершение
break;
default:
return(DefWindowProc(hWnd, messg, wParam, lParam)); //освобождаем очередь приложения от нераспознаных
}
return 0;
}
Вікна результатів:
Висновки: Я навчився створювати проекти в середовищі Visual C++ 10.0