Реферати

Контрольна робота: Загальна інформація про MFC. Ієрархія класів MFC. Місце MFC в середовищі розробника Visual З++

Фіскальна політика і її роль у макроекономічному регулюванні національної економіки. Міністерство утворення і науки Російської Федерації Федеральне агентство по утворенню ГОУ ВПО Всеросійський заочний фінансово-економічний інститут

Повторний інструктаж на фрезерних верстатах. Міністерство утворення Республіки Бєларус Брестський політехнічний технікум Реферат по предметі "Охорона праці" на тему: "Повторний інструктаж на фрезерних верстатах"

Онєгін і Печорин як герої свого часу. Проблема героя часу в російській літературі. Типи зайвих людей у романах Пушкіна і Лермонтова.

Шпора по загальній психології. інформаційна теорія Симонова: емоції з'являються внаслідок чи недоліку надлишку зведень, необхідних для задоволення потреби. Ступінь емоційної напруги визначається силою потреби і величиною дефіциту прагматичної інформації, необхідної для досягнення мети:

Соціалізація дітей з розумовою відсталістю. Зміст Уведення Глава 1.1.1Поняття соціалізації 1.2 Агенти соціалізації 1.3 Соціальна адаптація в школі 8 виду Розділ2 2.1 Характеристика програми, методів і методик дослідження адаптаційних можливостей розумово-відсталих підлітків

Загальна інформація проMFC. Ієрархія классовMFC. МестоMFCв середі разработчикаVisualC++

Ієрархія основних классовMFC. CObject (забезпечує базові операції введення/висновку) →CGDIObject (підтримка графічних об'єктів); CDC (клас, що забезпечує зв'язок з пристроями); CExeption (обробка виняткових ситуацій в MFC); CFile (базовий клас для обробки файлів); CMenu (підтримка обьектов меню); CCmdTarget (базовий для обробки повідомлення)1)→CWnd (базовий клас для вікон); СFrameWnd; 2)→CWinThread;CwinApp;

Структура простойMFCпрограмми. Програма на MFC містить, принаймні, 2 класи. І ці класи породжуються від CWnd і CWinThread. Для реалізації простої програми зробимо наступну послідовність кроків: 1) Створити клас додатків, породжений від CWinApp. 2) Створити клас вікна, породжений від CFrameWnd. 3) Для класу додатку оголосити функцію InitInstance(). 4) У конструкторові класу вікна викликати функцію Create для створення вікна. 5) Оголосити глобальний об'єкт додатку. 6) Створити карту повідомлення. 7) Підключити заголовні файли і визначитися з типом об'єктів.

//App.h

class CApp: public CWinApp

{public: BOOL InitInstance ();};

Class CMainWin:public CFrameWnd

{public: CMainWin (); DECLARE_MESSAGE_MAP ()

};

//App.cpp

#"include < afxwin.h >

#include App.h"

BOOL CApp::InitInstance ()

{m_pMainWnd=newCMainWin;m_pMainWnd→ShouWindow (m_nCmdShow); m_pMainWnd→UpdateWindow (); return TRUE;}

CMainWin::CMainWin ()

{Create (NULL, "Перша MFC-програма");}

CApp App;

BEGIN_MESSAGE_MAP (CMainWin, CFrameWnd)

END_MESSAGE_MAP ()

MFC- (MicrosoftFoundationClassLibrary) базова бібліотека класів; Ієрархія классовMFC. Бібліотека MFC містить велику ієрархію класів, написаних на З++. У її вершині знаходиться клас CObject, який містить різні функції, що використовуються під час виконання програми і призначені, зокрема, для надання інформації про поточний тип під час виконання, для діагностики, і для сериализації. Інформація про тип часу виконання. Якщо покажчик або посилання посилається на об'єкт, похідний від класу CObject, то в цьому випадку передбачений механізм визначення реального типу об'єкта за допомогою макроса RUNTIME _CLASS(). Хоч в З++ є механізм RTTI, механізм, реалізований в MFC, набагато більш ефективний по продуктивності.

Діагностика. Кожний клас, похідний від CObject, може по запиту перевірити свій внутрішній стан і видати діагностичну інформацію. Це інтенсивно використовується в MFC при відладці.

Серіалізациї. Сериализация - це механізм, що дозволяє перетворити поточний стан об'єкта в послідовний потік байт, який звичайно потім записується на диск, і відновити стан об'єкта з послідовного потоку, звичайно при читанні з диска. Це дозволяє зберігати поточний стан додатку на диску, і відновлювати його при подальшому запуску.

Основні класи. Деякі класи породжуються безпосередньо від CObject. Що Найбільш широко використовуються серед них є CCmdTarget, CFile, CDC, CGDIObject і CMenu. Клас CCmdTarget призначений для обробки повідомлень. Клас CFile призначений для роботи з файлами. Клас CDC забезпечує підтримку контекстів пристроїв. Про контексти пристроїв ми будемо говорити декілька пізніше. У цей клас включені практично всі функції графіки GDI. CGDIObject є базовим класом для різних DGI-об'єктів, таких як пера, кисті, шрифти і інші. Клас CMenu призначений для маніпуляцій з меню. Від класу CCmdTarget породжується дуже важливий клас CWnd. Він є базовим для створення всіх типів вікон, включаючи ті, що масштабуються ( "звичайні") і діалогових, а також різні елементи управління. Похідним класом, що Найбільш широко використовується є CFrameWnd. Як Ви побачите надалі, в більшості програм головне вікно створюється за допомогою саме цього класу. Від класу CCmdTarget, через клас CWinThread, породжується, напевно, єдиний з найбільш важливих класів, звернення до якого в MFC-програмах відбувається прямо: З WinApp. Це один з фундаментальних класів, оскільки призначений для створення самого додатку. У кожній програмі є один і тільки один об'єкт цього класу. Як тільки він буде створений, додаток почне виконуватися.

Функції-члени вMFC. Більшість функцій, що викликаються в MFC-програмі, є членами одного з класів, визначених в бібліотеці. Більшість функцій API доступні через функції-члени MFC. Проте, завжди можна звертатися до функцій API прямо. Іноді це буває необхідним, але все ж в більшості випадків зручніше використати функції-члени MFC.

Глобальні функції вMFC. У бібліотеці є ряд глобальних функцій. Всі вони починаються з префікса Afx. (Коли MFC тільки розроблялася, то проект називався AFX, ApplicationFramework. Після ряду істотних змін AFX була перероблена в MFC, але колишня назва збереглася в багатьох ідентифікаторах бібліотеки і в назвах файлів.) Наприклад, дуже часто використовується функція AfxMessageBox(), що відображає зазделегідь певне вікно повідомлення. Але є і член-функція MessageBox(). Таким чином, часто глобальні функції перекриваються функціями-членами. ФайлAFXWIN.H. Всі MFC-програми включають заголовний файл AFXWIN.H. У ньому, а також в різних допоміжних файлах, містяться описи класів, структур, змінних і інших об'єктів MFC. Він автоматично підключає більшість заголовних файлів, що відносяться до MFC, в тому числі і WINDOWS.H, в якому визначені всі функції WindowsAPI і інші об'єкти, які використовуються при традиційному програмуванні на З і "чистому" APL.

КаркасMFC-програми. У найпростішому випадку програма, написана з допомогою MFC, містить два класи, що породжуються від класів ієрархії бібліотеки: клас, призначений для створення додатку, і клас, призначений для створення вікна. Іншими словами, для створення мінімальної програми необхідно породити один клас від CWinApp, а іншої - від CFrameWnd. Ці два класи обов'язкові для будь-якої програми. Крім створення вищезазначених класів, в програмі також повинна бути організована обробка всіх повідомлень, що поступають від Windows. У даному прикладі програма ще нічого корисного не робить, тому відповідати на кожне повідомлення не треба. MFC обробить всі повідомлення, які нас не цікавлять. Проте в цьому прикладі присутня карта відгуків на повідомлення, або просто карта повідомлень. Пізніше ми розглянемо її детальніше. Для створення стандартного вікна в додатку повинен успадкуватися клас від CFrameWnd. У даному прикладі він називається CMainWin. Він містить конструктор і макрос DECLARE_MESSAGE_MAP(). Макрос насправді розвертається в декларацію карти повідомлень, яка визначає, яка член-функція класу повинна викликатися у відповідь на повідомлення Windows. Цей макрос застосовується для будь-якого вікна, в якому обробляються повідомлення. Він повинен бути останнім в декларації класу. Саме вікно створюється в конструкторові за допомогою виклику функції Create(). Ця функція використовується майже у всіх додатках. Вона виконує дії по створенню вікна. У цьому прикладі приведений самий простий випадок її використання. Поки нам треба знати, що другий параметр визначає заголовок вікна, а перший частіше за все рівний NULL.

Клас САррпріложенія породжується від CWinApp. Цей клас відповідає за роботу програми. У прикладі використовується член-функція з наступним прототипом: virtualBOOLCWinApp::lnitlnstance(); Це віртуальна функція, яка викликається кожний раз при запуску програми. У ній повинні вироблятися всі дії, пов'язані з ініціалізацією додатку. Функція повинна повертати TRUE при успішному завершенні і FALSE в іншому випадку. У нашому випадку, в функції спочатку створюється об'єкт класу CMainWin, і покажчик на нього запам'ятовується в змінної m_pMainWnd. Ця змінна є членом класу CWinThread. Вона має тип CWnd* і використовується майже у всіх MFC-програмах, тому що містить покажчик на головне вікно. У подальших двох строчках через неї викликаються функції-члени вікна. Коли вікно створене, викликається функція з прототипом: BOOLCWnd::ShowWindow(intHow);

Обработка повідомлень.Windows взаємодіє з додатком, посилаючи йому повідомлення. Тому обробка повідомлень є ядром всіх додатків. У традиційних додатках Windows (написаних з використанням тільки API) кожне повідомлення передається як аргументи віконної функції. Там звичайно за допомогою великого оператора switch визначається тип повідомлення, витягується інформація і виконуються потрібні дії. Це громіздка і здатна викликати помилки процедура. З допомогою MFC все робиться набагато простіше. Тут ми розглянемо обробку в програмі деяких повідомлень, що найчастіше використовуються.

Обробка повідомлень вMFC. У MFC включений набір приречених функцій-обробників повідомлень, які можна використати в програмі. Якщо програма містить таку функцію, то вона буде викликатися всякий раз, коли поступає пов'язане з нею повідомлення. При наявності додаткової інформації в повідомленні вона передається як аргументи функції. Для організації обробки повідомлень треба виконати наступні дії: У карту повідомлень програми повинна бути включена команда відповідного повідомлення. Прототип функції-обробника повинен бути включений в опис класу, відповідального за обробку даного повідомлення. У програму повинна бути включена реалізація функції-обробника.

2. Поняття контексту пристрою, застосування контекстів пристрою, обробка сообщенийWM_СHAR, WM_PAINT

В широкому значенні контекст пристрою є шляхом, по коториму Windows-програма, використовуючи відповідний драйвер, виводить інформацію в робочу область вікна. Контекст пристрою є структурою, яка повністю визначає стан цього драйвера і спосіб виведення.

Перш ніж програма почне виводити інформацію в робочу область вікна, вона повинні отримати контекст пристрою. Поки це не зроблене, немає зв'язку між програмою і вікном, призначеним для висновку.

У традиційних Windows-програмах контекст пристрою отримують викликом функцииGetDC(), а звільняють з помощьюReleaseDC(). Оскільки Windows може надати лише невелику кількість контекстів, важливо, щоб програма звільнила контекст після закінчення роботи з ним. MFC має відповідні класи, здатні керувати цим процесом. Зокрема, при створенні примірника об'єкта типу CClientDC програмі надається контекст пристрою. Якщо цей об'єкт необхідно вилучити, викликається функцияReleaseDC() і контекст пристрою автоматично звільняється. Конструктор класу СClientDC записується у вигляді:

СClientDC (CWnd *Windows);

де параметрWindowsявляется покажчиком на вікно, якому надається контекст пристрою. Для активного вікна можна указати ключове слово this.

Висновок в клієнтську область вікна програми може забезпечуватися з допомогою функцииTextOut():

virtual BOOL CDC::TextOut(int X, int Y, LPCSTR lpszStr, int Length);

гдеX, Y- координати точки почала висновку в пікселях (відносно лівого верхнього кута вікна програми), lpszStr- покажчик на рядок, який виводиться, аLength- його довжина. Приклад ілюструє можливий варіант реалізації обробника натиснення клавіш клавіатури - в точку (1, 1) вікна програми.

Приклад обробника натиснення клавіш клавіатури

char str [80]; // рядок символів для висновку

void CMainWin::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)

{CClientDC dc(this); // отримання контексту вікна

dc.TextOut(1,1," ", 3); // видалення старого тексту

wsprintf(str,"%с", ch); // формування рядка з кодом клавіші

dc.TextOut(1, 1, str, strlen(str)); // виведення в координату (1, 1)

}

Таким чином, кожний раз, коли необхідно вивести інформацію в робочу область вікна, необхідно отримати контекст пристрою з допомогою CClientDC. Окремим випадком є застосування повідомлення WM_PAINT.

Оновлення вікна програми,

що міститься робочій області Для оновлення робочого вікна програми, що міститься необхідно відіслати повідомлення WM_PAINT. Поза його застосуванням вміст вікна може не відображатися. Т. е. кожний раз, коли є потреба виводити інформацію у вікно програми, потрібно звертатися до цього повідомлення.

Повідомленню WM_PAINT відповідає макрокоманда ON_WM_PAINT(), а макрокоманді - обработчикOnPaint(). Цей обробник може виглядати таким чином:

Приклад обробника повідомлення WM_PAINT

void CMainWin::OnPaint()

{CPaintDC dc(this); // отримання контексту вікна

dc.TextOut(1,1, str, strlen(str)); // відображення символа

}

У прикладі приведений обработчикOnPaint(), який забезпечує виведення на екран символа, введеного з клавіатури користувачем відповідно обработчикуOnChar(), записаному в попередньому прикладі. Видно, що для отримання контексту пристрою тут використаний об'єкт іншого типу, а саме CPaintDC. На відміну від CClientDC, який працює тільки з клієнтською частиною вікна програми, CPaintDC забезпечує роботу з всією площиною вікна.

У програмі бажаним було б, щоб Windows самостійно вирішувала, коли їй викликати повідомлення WM_PAINT. Це так і відбувається, наприклад, коли користувач програми мінімізує вікно, максимізував, рухає екраном, змінює розміри вікна і т. п.. Але іноді необхідно провести оновлення вікна примусово. Для того, щоб прислати повідомлення WM_PAINT, програма викликає функциюInvalidateRect()- член класу CWnd, яка має наступний прототип:

void CWnd::InvalidateRect(LPCRECT lpRegion, BOOL Erase=TRUE);

гдеlpRegion- покажчик на область вікна, яку необхідно оновити, Erase- прапор, який в значенні TRUE встановлює вилучення попереднього вікна, що міститься. Якщо указати першому параметру значення NULL, станеться повне оновлення вікна. Виклик функцииInvalidateRect() забезпечує примусову посилку повідомлення WM_PAINT і виконання обработчикаOnPaint().

Повне оновлення вікна, як наприклад:

InvalidateRect(NULL);

займає багато ресурсів системи, яка візуально може виглядати мерехтінням робочого вікна програми. Цього можна уникнути, задавши окремо область оновлення, наприклад:

СRect region(10,10,100,100);

InvalidateRect(region);

в такому випадку буде оновлюватися лише область, обмежена прямокутником з лівим верхнім кутом (10,10) і нижнім правим кутом (100,100). Такий варіант оновлення стає особливо цікавим, якщо необхідно забезпечити рухливість окремих елементів вікна, а цього можна досягнути з одночасним застосуванням обробки повідомлення таймера WM_TIMER.

3. Основи роботи з текстом вMFC. Функції виведення, установки кольорів, режимів відображення, отримання метрик

В Windows є практично необмежені можливості по управлінню виведенням. Деякі з функцій зараз втратили своє минуле значення (або те, що було задумано, виявилося майже неможливим реалізувати), інші ж дуже широко використовуються.

Невелике введення

Будь-який шрифт, з яким ми маємо справу в Windows, характеризується декількома параметрами. Гарнітура (typeface)- це сукупність декількох начертаний шрифту, об'єднаних стильовими і іншими ознаками. Приклад гарнітур: Arial, TimesNewRoman, MSSansSerif. Розмір шрифту - це висота прямокутника, в який вміщуються всі символи шрифту, виражається в спеціальних одиницях - пунктах. Пункт рівний 1/72 частини дюйма. Ця одиниця прийшла з поліграфії. Зображення - це специфічні характеристики шрифту. У Windows доступні чотири зображення: нормальне (normal), курсивне (italic), жирне (bold) ижирное курсивне (bolditalic). Крім того, шрифти можуть битьмоноширинние (fixedpitch', приклад - CourierNew, ипропорциональние (variablepitch), приклад - TimesNewRoman.

Зараз в Windows в основному використовуються шрифти двох груп: растрові (приклади - MSSansSerif, Fixedsys) і контурні TrueType (приклади - Arial, CourierNew). Перші являють собою жорстко певні бітові матриці для кожного символа і призначені для відображення не дуже великого тексту на екрані. Другі являють собою дуже складні об'єкти. У них задані контури символів, які зафарбовуються за певними правилами. Кожний шрифт TrueType - це програма на спеціальній мові, яка виконується інтерпретатором під названиемрастеризатор. Програма шрифту повністю визначає спосіб розрахунку конкретних бітових матриць символів на основі контурів. При використанні символів маленького розміру (висотою приблизно до 30 точок) модель контурів стає некоректною і символи сильно спотворюються. Для боротьби з цим в якісних шрифтах используетсяразметка (хинти). Розмітка шрифту - надзвичайно складний і довгий процес, тому на ринку зустрічається небагато якісно розмічених шрифтів. Тому використати TrueType шрифти для виведення на екран небажано, за винятком стандартних шрифтів Windows (TimesNewRoman, Arial і CourierNew), які дуже якісно розмічені.

Координати при виведенні

За виведення у вікно вMFCотвечает функцияCDC::TextOut(). Їй треба указати координати для виведення. Ці координати являютсялогическимикоординатами, тобто вони вимірюються влогических одиницях. Це відноситься і до інших функцій виведення у вікно. У процесі відображення інформації логічні координати перетворюються в пікселі. За умовчанням логічними координатами є пікселі, що для нас дуже зручно.

Завдання кольору тексту і фону

При виведенні з допомогою функцииTextOutQпо умовчанню текст виводиться чорним кольором на поточному (звичайно білому) фоні. Однак за допомогою наступних функцій ці параметри можна змінити:

virtualCOLORREFCDC::SetTextColor(COLORREFCo virtualCOLORREFCDC::SetBkColor(COLORREFColo повертають значення попереднього кольору. ТіпCOLORREFпредставляет собою 32-розрядне беззнаковое ціле число - представлення кольору у вигляді червоної, зеленої і синьої компонент, кожна розміром в 8 біт. Для формування цього значення існує макросRGB().

Завдання режиму відображення фону

З допомогою функцииSetBkMode() можна задати режим відображення фону. Прототип функції такої: intCDC::SetBkMode(intMode);

Функция визначає, що відбувається з поточним кольором фону (а також деяких інших елементів) при відображенні тексту. Режим може приймати одне з двох значень:OPAQUEиTRANSPARENT. У першому випадку при виведенні буде виводиться також і поточний фон. У другому випадку фон виводиться не буде (він буде "прозорим"). За умовчанням використовується режимOPAQUE.

Отримання метрик тексту

Більшість текстових шрифтів є пропорційними, тобто ширина символів у них різна. Крім того, відстань між рядками залежить як від шрифту, так і від його розміру. Все виведення в Windows здійснюється програмно, тому необхідно враховувати всі ці параметри.

Наприклад, при виведенні однієї текстової після іншої передбачається, що відомі висота шрифту і кількість пікселів між рядками. Отримати цю інформацію можна за допомогою функції:

BOOLCDC::GetTextMetrics(LPTEXTMETRICSTextAtttrib) const; Параметр є покажчиком на структуруTEXTMETRIC, в яку будуть записані установки поточного шрифту контексту пристрою. Структура має досить багато полів. Найбільш важливі поля наступні:

LONGtmHeightПолная висота шрифту

LONGtmAscentВисота над базовою лінією

LONGtmDescentВисота підрядкових елементів

LONGtmlntemalLeadingПустое простір над символами

LONGtmExternalLeadingПустой інтервал між рядками

LONGtmMaxCharWidthМаксимальная ширина символів

Для отримання числа логічних одиниць по вертикалі між рядками треба скласти значенияtmHeightиtmExternalLeading. Це не те ж саме, що і висота символів.

Зміну шрифтів

Передбачимо, що ми маємо готовий ініціалізований примірник классаCFont, вмісний деякий шрифт (як це зробити, ми розглянемо трохи нижче). Для зміни шрифту в контексті пристрою використовується член, яка в нашому випадку приймає один параметр - покажчик на об'єкт шрифту. Після виконання цієї функції текст буде виводиться новим шрифтом. Хоч функція повертає покажчик на об'єкт старого шрифту, зберігати його зовсім не обов'язково.

Ініціалізація об'єкта шрифту: вибір шрифту

Після того, як об'єкт классаCFontсоздан, необхідно ініціалізувати його конкретним шрифтом з встановлених в системі, із заданими параметрами. Це може бути як растровий, так і контурний шрифт. Напевно, Ви справедливо чекаєте наявності функції, яка дозволяє задати тільки гарнітуру шрифту, зображення і розмір, після чого шрифт буде проинициализирован. На жаль, ні вMFCни в Windows такій функції немає. Єдина функція, яка підходить для виконання цієї задачі, має такий прототип:

BOOL CFont:: CreateFont( int nWidth,

int nEscapement,

int nOrientation,

int nWeight,

BYTE bltalic,

BYTE bUnderline,

BYTE cStrikeOut,

BYTE nCharSet,

BYTE nOutPrecision,

BYTE nClipPrecision,

BYTE nQuality,

BYTE nPitchAndFamily,

LPCTSTR IpszFacename);

Функція надто незручна, і значення багатьох її параметрів на сьогоднішній день не актуальне.

Функція була створена давно, і тоді здавалася захоплюючої идеяподстановки і заміни шрифтів, суть якої полягала в наступному: програміст задає такі параметри шрифту, які він хоче мати, aWindows сама на основі шрифтів, що є в системі зробить необхідні трансформації і синтезує необхідний шрифт з тих, що є. Згодом виявилося, що ця технологія не може бути задовільно прецездатний (оскільки практично це складна задача з області штучного інтелекту). Також функція дозволяє провести трансформації шрифту - розтягувати і стискати його, виводити текст під кутом. Зараз це використовується рідко. Графічні пакети використовують свої алгоритми трансформацій, і часто використовують шрифти PostScript. Суть же полягає в тому, що якісно можуть бути відображені тільки ті шрифти і в тих начертаниях, які присутні в системі, причому без трансформацій (тобто з використанням хинтов, які відключаються при трансформаціях). Для більшості сучасних програм потрібно висока якість відображення тексту, тому ніякі трансформації і підстановки недоречні. Практично, є розумними лише два варіанти поведінки: або програма буде використовувати точно той шрифт, який запитала, в такому вигляді, в якому його створив розробник, або відмовиться працювати при відсутності шрифту.

Розглянемо приклад коду, який дозволяє задати розмір шрифту, зображення і гарнітуру, мінімізувавши можливі трансформації шрифту і синтезу при відсутності заданого. Такі ж параметри для функцииCreateFontQВи можете використати в своїх програмах.

Бажано також перевіряти наявність шрифту, якщо він не є стандартним. Ось код, який використовується в прикладі програми (покажчик на об'єкт шрифту зберігається в переменнойmjpFoni):

void CMainFrame::SetClientFont(CString Typeface, // Гарнітура

intSize, // розмір в пунктах

BOOLBold, // Ознака жирного зображення

BOOLItalic // Ознака похилого зображення

}

{

// Отримаємо контекст вікна

CWindowDCwinDC(this);

// Взнаємо, скільки пікселів в одному логічному дюймі У

int pixelsPerlnch = winDC.GetDeviceCaps(LOGPIXELSY);

// Взнаємо висоту в пікселях шрифту розміром Size пунктів

int fontHeight = -MulDiv(Size, pixelsPerlnch, 72);

// Встановлюємо параметр жирності для функції CreateFont()

int Weight = FW_NORMAL;

if(Bold)

Weight = FWBOLD;

// Удаляемпредидущийекземпляршрифта - нельзядваждиинициализироватьшрифтвизовом CreateFont().

delete m pFont;

mjpFont = new CFont;

// Створення шрифту. Більшість параметрів не використовуються.

m_pFont- > CreateFont(tHeight, 0, 0, 0, Weight, Italic, О, О,

DEFAULT_CHARSET, OUT_DEFAULT PRECIS,

CLIP_DEFAULT_PRECIS, PROOF_QUALITY,

DEFAULT_PITCH ¦ FF_DONTCARE, Typeface);

}

Література

1. Рад Б. Я., "Яковльов С. А. Робототехника". - М.: Висш. шк., 2007.- 271 з.

2. Методичні указанияк курсовій работепо дисципліні "Робототехника і мехатроника" для студентів специальностиГКСР ". 2005.

3. Радіоелектроніка. Пічукин Г. В. М. 1999.