Програмування для Windows CE h2>
Дуглас Боулінг p>
Вступ h2>
"Третя"
Windows - нова операційна система Windows CE - не отримала такої
популярності, як її старші сестри - Windows 98 і Windows NT, але ситуація
починає змінюватися. Windows CE призначена для невеликих, що харчуються від
батарейок пристроїв, таких, як персональні електронні асистенти. Незважаючи на
величезну різницю між цими приладами і настільними і портативними ПК,
методики розробки програм для пристроїв Windows CE і комп'ютерів Windows у
чому схожі. У цій статті ми розповімо про програмування для пристроїв
Windows CE, але перш за все спробуємо розібратися, що саме представляє
собою Windows CE, щоб провести межу між операційною системою і
конкретними платформами, на яких вона працює. p>
Windows
CE - це абсолютно нова версія Windows. Її не можна назвати оновленої або
спрощеною версією Windows 98 або Windows NT. На відміну від них Windows CE з
самого початку проектувалася як нова операційна система для пристроїв з
живленням від батарей, за габаритами значно поступаються стандартним ПК.
Користувачам, мабуть, найчастіше доводилося чути про Windows CE-комп'ютерах,
таких, як ручні (hand-held, РПК) або кишенькові (Palm-size, КПК) ПК, ніж про
самій операційній системі. У ПЗУ подібних пристроїв, що випускаються зазвичай
виробниками комплексного обладнання (OEM), наприклад фірмами Hewlett
Packard і Casio, занесена версія Windows CE. Тому користувачі позбавлені
необхідності встановлювати Windows CE, вона поставляється з такими приладами по
замовчуванням. p>
Інтерфейс
Windows CE передбачає підмножина функцій інтерфейсу прикладного
програмування API Win32, що застосовується в Windows 98 і Windows NT. Напевно,
розробники програм для Windows NT, почувши про "підмножині", будуть
розчаровані, але не варто хвилюватися, тому що розходження в API між версіями
Windows для настільних ПК і Windows CE не викличуть великих проблем. Основні
відмінності між ними зводяться до того, що інтерфейс Windows CE позбавлений від
надлишкових функцій, присутніх у API Win32 для сумісності з
попередніми версіями Windows. Наприклад, у версіях Windows для настільних
систем є три або чотири способи відкриття файлу програмними засобами. У
середовищі Windows CE для цього існує тільки один спосіб - за допомогою функції
CreateFile. p>
Інші
API відмінності полягають у тому, що в Windows CE не реалізовані цілі групи
функцій, які має Windows NT. Наприклад, бібліотека Winsock з
складу Windows CE не містить більшості функцій WSAAsync, представлених у
Windows 98 і NT. При цьому функціонально Windows CE аж ніяк не бідніший, тільки при
програмуванні гнізд в середовищі Windows CE доведеться вдаватися до послуг більше
простий Берклі-версії протоколу sockets. Для Windows-програмістів це означає
необхідність освоєння процедур застосування базових блокуючих і неблокірующіх
гнізд без таких корисних функцій, як WSAAsync, які в Windows 9x і NT
відповідають за повідомлення прикладних програм про події, що відбуваються з гніздом.
p>
Інше
важлива відмінність між Windows CE та її великомасштабними родичками складається
в тому, що її структура заздалегідь передбачає для OEM можливість зміни
конфігурації, з тим щоб система максимально відповідала конкретним
апаратних платформ. Наприклад, вимоги до професійних ручним ПК,
які представляють собою мініатюрні блокнотние ПК, що працюють під
управлінням Windows CE, суттєво відрізняються від вимог до ПК класу
Palm-size. Тож Windows CE допускає розбивка на компоненти, щоб вилучати
ті частини цієї операційної системи, які не знадобляться на цільовий
платформі. Подібна процедура зовсім не означає тільки виключення ряду DLL з
складу ОС для конкретної платформи, варіанти зміни конфігурації Windows CE
набагато різноманітніше. Наприклад, API курсору, керуючий зовнішнім виглядом
покажчика на екрані, або навіть компонент, що відповідає за роботу з буфером обміну,
цілком можуть бути вилучені. p>
Завдання
вибору компонента Windows CE вирішує виробник обладнання для платформ
вертикального ринку або компанія Microsoft для платформ горизонтального ринку.
При різних поєднаннях компонентів утворюються і відповідні інтерфейси API.
Отже, інтерфейс API для РПК фірми Casio ідентичний API для РПК компанії
NEC, оскільки в обох системах застосовується одна і та ж конфігурація Windows
CE, підготовлена Microsoft для пристроїв класу РПК. З іншого боку,
інтерфейси API пристроїв РПК і КПК дещо відрізняються, оскільки конкретні
компоненти Windows CE для цих двох платформ не зовсім однакові. Однак не
варто надавати велике значення цим відмінностей. Якщо не торкатися специфічних
функцій API, розрахованих тільки на пристрої одного класу, ніяких проблем з
розробкою програм для обох платформ не буде. Завжди є можливість
запобігти виникненню проблем, пов'язаних зі специфікою платформ, для
цього досить явно підключити функції, орієнтовані на конкретну
платформу, за допомогою команд LoadLibrary і GetProcAddress. p>
На
Насправді найсерйозніша проблема розробки програм, призначених для
виконання на обох платформах, пов'язана з різницею в розмірах екранів, якими
оснащуються влаштування цих класів. Наприклад, витягнутий по горизонталі екран
РПК (640Ч240 пікселів), вимагає іншого розташування діалогових вікон, ніж на
вертикальному екрані КПК (240Ч320). Розумне рішення в цьому випадку - підготувати
окрему процедуру для роботи з діалоговими вікнами, що містить різні шаблони
вікон для цих двох екранів, що відрізняються габаритами. При такому підході
належний шаблон може визначати прикладна програма під час виконання. p>
Ще
одну проблему при програмуванні для пристроїв Windows CE створює вічно малий
обсяг пам'яті робочого середовища, в якій доводиться "існувати"
програмі. При тому, що Windows CE передбачає механізм підкачки сторінок по
міру потреби, вона не дозволяє використовувати файл підкачки для збереження даних
читання-запису на вторинному пристрої пам'яті, наприклад жорсткому диску. Іншими
словами, недоступні для запису сторінки, наприклад з програмними кодами і
постійними даними, переносяться в пам'ять, як тільки в них виникає
необхідність. Проте дані для читання-запису ніколи не заносяться в файл
підкачки на жорсткому диску. Завдяки таким обмеженням швидше відбувається
запуск програм в Windows CE, оскільки в пам'ять завантажуються тільки ті частини
програми, які потрібні на момент запуску. Але, оскільки Windows CE НЕ
дозволяє зберігати у файлі підкачки змінні дані, у розпорядженні
прикладних програм знаходиться вельми обмежена в обсязі фізична ОЗУ
пристрою. З цієї причини, цілком можливо, часом в ході виконання
програма буде відчувати гостру нестачу пам'яті. Отже, програми
для Windows CE повинні бути гранично "економні" в споживанні
оперативної пам'яті і забезпечені засобами для "м'якого" виходу з
що виникають у зв'язку з цим аварійних ситуацій. p>
Інструменти h2>
Як
відомо, Windows CE розрахована на самі різні пристрої, це серйозно
ускладнює життя творцям засобів розробки. Оскільки Windows CE сумісна
з різними ЦП і передбачає безліч варіантів настройки, причому для
кожного з них застосовується свій API, необхідний якийсь спосіб передачі
конкретному середовищі розробки інформації про цільову платформі. Для вирішення цієї
завдань Microsoft підготувала цілий набір пакетів розробки для Windows CE,
деякі з них сумісні з усіма платформами, а інші орієнтовані тільки
на звичайні та професійні ручні ПК. p>
Ці
інструменти призначені для застосування в середовищі Windows NT. Розробка
програм відбувається в середовищі Developer Studio за допомогою одного із згаданих
нижче мов. Готова програма виконується на Windows CE-пристрої,
підключеному до ПК розробника або через послідовний порт, або через
локальну мережу. З'єднання через послідовний порт - стандартний спосіб
підключення в Windows CE, що застосовується для синхронізації даних між ними і ПК.
Мережеві з'єднання забезпечують значно більш високу швидкість завантаження, ніж
перший спосіб, але, на жаль, деякі інструменти налагодження відмовляються
працювати, якщо Windows CE-пристрій підключено таким чином. p>
Microsoft
пропонує версії мов Visual C + +, Visual Basic і Visual J + + для однієї або
декількох платформ Windows CE. Наявні нині версії Visual Basic і Visual J + +
для Windows CE орієнтовані тільки на звичайні та професійні ручні ПК. У
даний час для підготовки програм, розрахованих на інші платформи,
придатна лише версія Visual C + +, сумісна з будь-якою з них. Тому в нашій
статті ми розглянемо тільки середовище програмування Visual C + +, хоча не
виключено, з безлічі причин читач вважатиме за краще якийсь інший з мов. p>
Перш
ніж приступити до розробки програми для Windows CE на мові Сі чи Сі + +,
потрібно встановити стандартну версію Visual C + + (5.0 або 6.0) для настільних ПК,
а потім розширення Visual C + + для Windows CE, яке постачає Microsoft. Воно
містить компілятори для всіх можливих ЦП, з якими працює Windows CE, а
також версії MFC і ATL, розраховані на пристрої РПК. Це розширення дозволяє
складати програми і для ПК, просто завдяки йому збільшується перелік
цільових платформ і з'являється можливість розробки додатків для Windows CE.
p>
Крім
того, для компіляції Windows CE-програми, орієнтованої на конкретну
платформу, як і раніше необхідні include-та lib-файли, тому, якщо програма
призначена для стандартної горизонтальної платформи, наступним кроком буде
встановлення конкретного комплекту SDK для неї. Такі SDK для різних платформ
безкоштовно надає Microsoft, і їх можна переписати з Web-сайті
(www.microsoft.com/windowsce/downloads/pccompanions/default.asp). У комплект
поставки пакета Visual C + + для Windows CE зазвичай входить компакт-диск з SDK для
РПК, але все-таки варто перевірити, чи немає на Web-сайті компанії більш свіжої
версії. p>
Для
перенесення Windows CE на нову апаратну платформу Microsoft пропонує ще один
інструмент - Windows CE Platform Builder - наступник набору Embedded Toolkit,
який застосовувався в попередніх версіях Windows CE. За допомогою даного інструменту
можна представити операційну систему в форматі бібліотека об'єктів, з тим
щоб розробник розбив її на компоненти і підготував версію цієї ОС для
конкретної платформи. До складу Platform Builder входять також інструменти для
формування SDK, розрахованого на конкретну платформу, для якої
готується розбита на компоненти операційна система. p>
Ті
програмісти, які розробляють програми для РПК або інших горизонтальних
платформ, цілком обійдуться без Platform Builder, але його, безсумнівно, варто
порекомендувати серйозним авторам Windows CE-додатків. Цей складний набір
інструментів забезпечує безцінну інформацію про архітектуру Windows CE.
Пізніше ми поговоримо про Platform Builder докладніше. p>
Базовий цикл розробки програм h2>
А
тепер приступимо до розробки цієї Windows CE-програми.
Послідовність необхідних для цього кроків тут така ж, як і при
підготовці програми для Windows настільних систем. Для початку організуємо нову
робочу область у вікні Visual C + +. Можна вдатися до послуг одного з
безлічі "майстрів", покликаних допомогти в складанні Windows
CE-програм, або зайнятися цим самостійно, вибравши тип додатка Win32
application і встановивши прапорці для тих процесорів, на які, як передбачається,
буде розрахована програма. p>
За
завершення розробки проекту слід просто набрати текст програми і
підготувати ресурси, у тому числі меню, піктограми і шаблони діалогових вікон,
майже так само, як під час аналогічних процедур в середовищі Windows 98 або Windows
NT, виключення складають вищезазначені відмінності в API. Як було відзначено
раніше, відмінності ці не занадто значні; проте деякі особливості
моделі програмування для Windows CE все ж заслуговують на увагу. Перша, і,
на поверхневий погляд, найбільш дивовижна з них, - відсутність в Windows
CE меню для вікон верхнього рівня. Це не означає, що Windows CE-програми не
можуть мати меню, просто керування ними організується через панель команд. p>
Елемент
управління "панель команд" і її більш складні "сестри" --
"командні смуги" - забезпечують доступ до меню і інструментальним
панелей, крім того, передбачають місце для розміщення кнопок виклику
довідкової системи програм Windows CE та їх закриття. Завдяки своїй
конструкції ці елементи управління гранично прості в програмуванні. На
справі немудра панель команд, яка забезпечує доступ до меню і кнопок
закриття програми, може бути представлена лише трьома рядками в тексті
програми. В елементі управління "командна смуга" отримала
подальший розвиток концепція панелі команд, компоненти якої, тобто меню,
кнопки та інші елементи, групуються в окремі смуги, які розміщуються на
екрані користувачем. Основою цього елемента служить елемент управління rebar
(повторно використовувана панель), розроблений для Internet Explorer 3. p>
Ще
одна відмінність Windows CE-програм полягає в тому, що в масштабах окремої
програми піктограми призначаються класами, а не примірників вікна.
Отже, два вікна одного і того ж віконного класу будуть мати одну і ту
ж піктограму. Це не відіграє особливої ролі, оскільки піктограма вікна
відображається лише на відповідній кнопці панелі завдань. p>
Більшість
інших відмінностей, не рахуючи вже перерахованих, стосується угод по
програмування, а не обмежень для програм або відмінностей в реалізації.
Наприклад, вікна верхнього рівня в Windows CE можуть містити рядки заголовка, в
той час як за наявними угодами це неприпустимо. Подібний заборона викликана
необхідністю економії місця на крихітних екранах пристроїв Windows CE. У
версіях Windows для настільних систем рядок заголовка застосовується для
переміщення вікна по екрану. Такий функції в Windows CE-системах найчастіше немає,
так як за замовчуванням вікна верхнього рівня в Windows CE займають весь екран. p>
Тут
доречно згадати одну з новинок Windows CE. Починаючи з версії Windows CE 2.1
диспетчер вікон обзавівся засобами для роботи із стандартними вікнами
змінного розміру. Операційна система завжди забезпечувала можливість
формування вікон будь-якого фіксованого розміру, проте тепер диспетчер вікон
дозволяє оздоблює перекриваються вікна рамками, в результаті користувач
може змінювати їх розміри. Проте навіть на нових професійних РПК таке
побачиш не часто, оскільки за замовчуванням вікна верхнього рівня займають всю
площа екрана, незважаючи на його відносно чималі розміри. p>
//============================================= =============== p>
//
TinyCE - Невелика програма для Windows CE p>
// p>
# include p>
# include // підключення лінійки команд p>
LRESULT CALLBACK MainWndProc (HWND,
UINT, WPARAM, LPARAM); p>
TCHAR szAppName [] = TEXT
( "TinyCE "); p>
HINSTANCE hInst; p>
//----------------------------------- p>
// Точка входу в програму p>
// p>
int WINAPI WinMain (HINSTANCE
hInstance, p>
HINSTANCE hPrevInstance, LPWSTR
lpCmdLine, p>
int nCmdShow) ( p>
WNDCLASS wc; p>
HWND hWnd; p>
MSG msg; p>
hInst = hInstance; p>
// Реєструється клас App Main Window p>
memset (& wc, 0, sizeof (wc )); p>
wc.lpfnWndProc = MainWndProc;// Зовнішній виклик p>
wc.hInstance = hInstance;// Дескриптор власника p>
wc.hbrBackground = (HBRUSH)
GetStockObject (WHITE_BRUSH); p>
wc.lpszClassName = szAppName;// Назва класу вікна p>
if (RegisterClass (& wc) == 0)
return -1; p>
// Побудова головного вікна p>
hWnd = CreateWindow (szAppName,// Клас вікна p>
szAppName,// Заголовок вікна p>
WS_VISIBLE,// Прапори стилів p>
CW_USEDEFAULT,
//Позиція по X p>
CW_USEDEFAULT,
//Позиція по Y p>
CW_USEDEFAULT,
//Початкова ширина p>
CW_USEDEFAULT,
//Початкова висота p>
NULL,
//Предок p>
NULL,
//Меню, повинен мати p>
//
значення NULL p>
hInstance,
//Примірник програми p>
NULL);
//Покажчик для p>
//
створення параметрів p>
//
Як return-значення передається код помилки, p>
//
якщо вікно не побудовано p>
if
(! IsWindow (hWnd)) return -2; p>
//
Стандартні виклики відображення та оновлення p>
ShowWindow
(hWnd, nCmdShow); p>
UpdateWindow
(hWnd); p>
//
Цикл обробки повідомлень у програмі p>
while (GetMessage (& msg, NULL,
0, 0)) ( p>
TranslateMessage (& msg); p>
DispatchMessage (& msg); p>
) p>
return 0; p>
) p>
//----------------------------------- p>
// Основна віконна процедура p>
// p>
LRESULT CALLBACK MainWndProc (HWND
hWnd, UINT wMsg, p>
WPARAM wParam, LPARAM lParam) ( p>
HWND hwndCB; p>
PAINTSTRUCT ps; p>
RECT rect; p>
HDC hdc; p>
switch (wMsg) ( p>
case WM_CREATE: p>
//
Створення мінімальної панелі команд, що містить тільки p>
// кнопку Exit. p>
hwndCB = CommandBar_Create (hInst,
hWnd, 0x10); p>
CommandBar_AddAdornments (hwndCB, 0,
0); p>
break; p>
case WM_PAINT: p>
//
Налаштування розміру прямокутника клієнтського вікна p>
//
з урахуванням висоти панелі команд. p>
GetClientRect (hWnd, & rect); p>
rect.top + = CommandBar_Height
(GetDlgItem (hWnd, 0x10 )); p>
hdc = BeginPaint (hWnd, & ps); p>
DrawText (hdc, TEXT ( "Hello
Windows CE! "), -1, & Rect, p>
DT_CENTER | DT_VCENTER |
DT_SINGLELINE); p>
EndPaint (hWnd, & ps); p>
break; p>
case WM_DESTROY: p>
break; p>
) p>
return DefWindowProc (hWnd, wMsg,
wParam, lParam); p>
) p>
Досить
поглянути на цей текст, щоб побачити, як схожі програми Windows CE на
звичайні Windows-програми. p>
А
тепер, не випускаючи з уваги всі перераховані міркування, р?? ссмотрім
елементарну програму для Windows CE. На рис. 1 показаний початковий текст простий
програми TinyCE, яка лише виводить на екран рядок тексту в головному вікні.
При першому погляді програмісти, те саме що з функціями Win32, навряд чи
виявлять ледь помітні відмінності між цією програмою та її "кузина"
для Windows 98 або NT. Вона так само реєструє клас вікна, конструює вікно,
виконує цикл обробки повідомлень і працює з вікнами, як і будь-яка інша
Windows-програма. У відмінностях, що спостерігаються в даному прикладі, повинні вже
згадувані розбіжності в інтерфейсах API. Наприклад, для розміщення кнопки
закриття програми використовується панель команд. Після набору тексту програми
для її компіляції і запуску застосовуються такі самі методи, як і для
додатків на настільних ПК. Процедура передбачає компіляції
додаткову операцію автоматичного завантаження отриманого EXE-або DLL-модуля
в підключений до настільного ПК Windows CE-пристрій. Для запуску програми на
виконання в середовищі Windows CE вибирається той самий пункт меню Program | Run
(Програма | Запуск або [Ctrl] + [F5]), що й при запуску програми,
підготовленої для Windows NT. p>
І
звичайно, за допомогою інтегрованого відладчика можна виконувати програму в
покроковому режимі. Основна відмінність між налагодженням програм для Windows CE та
Windows NT викликане впливом швидкості послідовного з'єднання між ПК
розробника і віддаленої Windows CE-системою. Через низьку швидкість такого
з'єднання покрокова налагодження перетворюється на дратівливо повільний процес. Що
Щодо мене, я зазвичай застосовую відладчик тільки для пошуку найбільш
важковловимий помилок. p>
Замість
дистанційного відладчика можна застосовувати інший варіант. Всі SDK для платформ
РПК, КПК і автомобільних ПК (Auto PC) оснащені програмними емуляторами,
які намагаються імітувати віддалене Windows CE-пристрій в середовищі Windows
NT. Такий емулятор запускає скомпільовану спеціальним чином версію
підготовленої програми. Він емулює інтерфейс API Windows CE, в тому числі
такі його розширення, як API СУБД. Але і тут не обходиться без проблем: модель
середовища Windows CE, що забезпечується емулятором, далека від ідеалу. Іноді після
цілого дня роботи раптом розумієш, що проблема, над вирішенням якої б'єш, --
проблема емулятора, а не помилка у програмі. p>
Але
вихід з ситуації все ж таки є: програми для Windows CE слід
складати таким чином, щоб вони компілювали як для Windows CE, так і
для Windows NT. В результаті загальні для обох систем фрагменти програми можна
налагоджувати локально в середовищі Windows NT, а потім, обравши іншу цільову середу,
провести компіляцію для Windows CE. Потрібно лише пам'ятати, що багаторазові компіляції
на будь-який з платформ чреваті складнощами. Після нескінченних повторів компіляції
для Windows NT доведеться витратити багато часу, щоб шляхом внесення змін
добитися належного функціонування програми в середовищі Windows CE. p>
Розробити
програму, яка буде компілюватися і для Windows NT, і для Windows CE, не
так вже й важко. Щоб виділити фрагменти програми, характерні для конкретної
операційної системи, варто застосовувати вираження define компілятора, і тоді
вони будуть вибиратися при компіляції для заданої ОС. У наведеному нижче
фрагменті програми функції формування панелі команд розміщені в пропозиціях
умовної компіляції (#), тому будуть охоплені процедурою компіляції тільки
для Windows CE. p>
# ifdef
_WIN32_WCE// Якщо виконується p>
//
компіляція для CE p>
HWND
hwndCB; p>
//
Формування панелі команд. P>
hwndCB = CommandBar_Create (hInst,
hWnd, p>
IDC_CMDBAR); p>
//
Додавання кнопки закриття програми p>
// в панель команд. p>
CommandBar_AddAdornments (hwndCB, 0,
0); p>
# endif
//_WIN32_WCE P>
Звичайно,
підготовка тексту програми складає тільки частина процесу розробки.
Життєво необхідний набір інструментів для налагодження і тестування програми. У
ході установки Visual C + + для Windows CE інсталюється комплект інструментів
для роботи в дистанційному режимі, який допоможе при налагодженні Windows
CE-програм. У комплект входять здебільшого інструменти, аналогічні своїм
побратимам, орієнтованим на налагодження Windows-програм для настільних ПК. Серед
них є Windows CE-версії програми Regedit для редагування системного
реєстру на Windows CE-пристроях; Spy для відстеження повідомлень, що надходять
для вікон Windows CE, і ZoomIn для перевірки промальовування зображень при їх
збільшення. Крім того, комплект містить модуль моніторингу, який дозволяє
відслідковувати стан процесів, що виконуються на пристрої. Програма
забезпечує інформацію про поточні потоках кожного процесу, а також про те,
які DLL завантажені в ході виконання цього процесу. І останній інструмент --
програма перегляду пам'яті, за допомогою якої можна перевіряти вміст
динамічних областей пам'яті програми (хіповую). Всі ці інструменти запускаються
на настільному ПК і взаємодіють з ПЗ віддаленого клієнта підключеного до нього
Windows CE-пристрої. p>
Platform Builder h2>
Підготовка
програм для Windows CE - тільки одна сторона роботи з цією операційною
системою. Відомо, що версії Windows для настільних машин можна переносити на
інші сумісні ПК, однак права на поставку комплектів інструментів,
необхідних для цих цілей, належать компанії Microsoft та її уповноваженим
OEM-партнерам. Навпаки, аналогічний набір Platform Builder для Windows CE,
незважаючи на його дорожнечу, поширюється через роздрібні канали. Таким
чином, розробники програм для Windows CE можуть не тільки складати
програми, а й готувати різні версії самої операційної системи. p>
В
склад Platform Builder входять тексти зразків програм для шару абстракції OEM
(OEM abstraction layer, OAL), який являє собою шар програм,
розроблених виробником обладнання для адаптації Windows CE до конкретної
апаратурі. OAL містить ПО шару апаратної абстракції (Hardware Abstraction
Layer, HAL), призначене для обслуговування ядра Windows CE, а також драйвери
для вбудованих апаратних компонентів, наприклад клавіатури, сенсорного екрану і
дисплея. Крім того, є тексти програм для зразків драйверів
аудіопристроїв і послідовного порту, а також драйвера контролера PCMCIA. p>
Комплект
Platform Builder передбачає і засоби низькорівневою налагодження. Ці
інструменти призначені насамперед для сприяння в перенесенні Windows CE на
нові апаратні платформи, але вони цілком придатні і для діагностування
яких важко проблем прикладного ПЗ. У новітніх версіях Windows CE є
спеціальні програмні процедури для роботи з вбудованим профіліровщіком
Монте-Карло - дуже зручним засобом оптимізації продуктивності програм.
Нарешті, Platform Builder супроводжує велика, з точки зору виробника
обладнання, документація по експлуатації Windows CE. p>
Програмування
в середовищі Windows CE - заняття досить цікаве. Інтерфейс API Win32 надає
цього процесу схожість з програмуванням для Windows 98 або NT, однак при
розробці програм доводиться враховувати апаратні обмеження. Менш
швидкодіючі ЦП і обмежений обсяг пам'яті більшості Windows
CE-пристроїв змушують ретельно продумувати підходи до програмування, щоб
підвищити ефективність своїх творінь. Насправді досить забавно в наш
час, тобто в епоху многомегабайтних програм для ПК, побачити програмістів,
всерйоз стурбованих швидкодією ЦП та обсягами програм. p>
Список літератури h2>
Для
підготовки даної роботи були використані матеріали з сайту http://www.citforum.ru/
p>