МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Кафедра інформаційних систем та мереж
Лабораторна робота №1
з курсу
«Проблемно-орієнтоване програмування»
на тему
Структура діалогової програми для Windows
Мета роботи полягає у вивченні структури діалогової програми для Windows з використанням функцій API-інтерфейсу (Application Program Interface).
Теоретичні відомості:
Програма на Сі для Windows, як і для будь-якої іншої платформи, повинна обов'язково містити деяку "стартову" функцію, для якої передається управління при запуску програми. Взагалі кажучи, ім'я такої "стартової" функції може відрізнятися в різних компіляторах, але історично склалося так, що такою функцією є:
int main ()
У цій функції може бути до трьох параметрів:
int main (int argc, char * argv [], char * env [])
argc - кількість параметрів в командному рядку (включаючи ім'я програми),
argv - масив рядків-параметрів (argv [0] - ім'я програми),
env - масив рядків-змінних
Як відомо, в Сі є лише три базових типи (char, int, float / double) і ще кілька їхніх варіацій з модифікаторами signed / unsigned, short / long. Однак, фірма Microsoft вирішила описувати функції Win32 API за допомогою перевизначених типів. Ось деякі з них:
typedef unsigned char BYTE;
typedef int INT;
typedef long BOOL;
typedef char CHAR;
Вікно - це прямокутна область екрану, в якому програма відображає інформацію і отримує реакцію від користувача. Одночасно на екрані може відображатися кілька вікон, в тому числі, вікон інших додатків, однак лише одне з них може отримувати вказівки від користувача - активне вікно. Користувач використовує клавіатуру, мишу та інші пристрої введення, для взаємодії з додатком, до якого належить активне вікно. Кожне 32-бітовий додаток створює, принаймні, одне вікно, зване головним вікном, яке забезпечує користувача основним інтерфейсом взаємодії з додатком.
Вікно програми може містити рядок заголовка title bar, рядок меню menu bar, системне меню system menu, кнопку згортання вікна minimize box, кнопку розгортання вікна maximize box, рамку зміни розмірів sizing border, клієнтську область client area, горизонтальну і вертикальну смуги прокрутки scroll bars. Крім головного вікна, додаток може використовувати ще і інші типи вікон: керуючі елементи (controls), діалогові вікна (dialog boxes), вікна-повідомлення (message boxes).
Керуючий елемент - вікно, що безпосередньо забезпечує той чи інший спосіб введення інформації користувачем. До керуючих елементів відносяться: кнопки, поля введення, списки, смуги прокрутки і т.д. Керуючі елементи зазвичай не існують самі по собі, а знаходяться в будь-якому діалоговому вікні.
Хід роботи:
Запустив середовище Visual Studio 2010
/
Створив проект Win32, назвав його відповідним іменем і на екрані відобразився шаблон коду і під’єднаних до проекту файлів.
/
Відкривши, редактор ресурсів, я намалював піктограму для своєї програми і назвав дуже оригінальним іменем «ICON3.ico». В якості малюнку обрав державний прапор України. Для маленької піктограми,
(16х16) я створив звичайне двоколірне зображення. Натомість на більшому (32х32), я намалював прапор із додатковим надписом UA
/
Відкривши файл, «Resource.h» я дізнався ідентифікаційний номер, за яким записана ця піктограма. Відповідно до цього, в основному файлі програми «Labor_1.cpp», у функції WNDCLASSEX я підключив цю піктограму до програми. Відповідно, у цій ж самій функції, двома рядками нижче, я змінив колір тла з білого на темно-сірий. Зробив я це за допомогою рядка wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+17); змінивши число після плюса з 1 на 17.
/
Курсор я змінив у відповідному рядку класу WNDCLASSEX.
/
/
Заголовок я змінив у ресурсному файлі Labor_1.rc у рядку, що має вигляд як на наступному малюнку. Звичайну (дефолтну) назву я поміняв на «Ukraine»
/
/
Результатом роботи стала повністю справна, мінімальна програма для Win32API. Ось приклад довідки цієї програми:
/
Висновок: на цій лабораторній роботі я навчився працювати з параметрами функцій програми Win32API. Весь код програми має складну, тривалу для вивчення структуру, що відповідно ускладнює її зрозуміння. Також на цій лабораторній роботі мені стали зрозумілі деякі аспекти роботи розробників програмного забезпечення, труднощі у їхній роботі