тися в разі непідтримуваної версії. Наприклад Alarm Manager присутня не в усіх версіях.
4.10. Розширення PalmOS
Як уже раніше говорилося всі програми викликають функції PalmOS для виполненеія яких або дій (в Windows такий набір функцій називається WinAPI ), Наприклад відкриття файлу, виведення на екран, введення/виведення. Але PalmOS так влаштована що в ній можна перевизначати поведінку цих функцій.
в Windows теж можна підмінити будь-яку API функцію, але в PalmOS цей механізм спрощений і офіально підтримується на рівні системи. br/>
Розглянемо на приклад що відбувається при відкритті файлу:
при виклику DmOpenDatabase (відкриття файлу) викликається функція з номером sysTrapDmOpenDatabase в спеціальній таблиці покажчиків. Цей механізм називається - Palm OS trap dispatch mechanism - тобто коли викликається функція то насправді додаток звертається до trap dispatch механізму і просить його викликати такий-то номер функції (а параметри передаються в стеку). Цю таблицю покажчиків можна спокійно змінювати з метою підміни функцій. <В
Підмінити системну функцію може будь додаток (наприклад CyrHack, воно видно в системі як додаток але підміняє ряд функція для русифікації PalmOS). Але є ще спеціальний вид додатків для PalmOS - це Хакі (від слова hach, а офіційних назву System Extention), це прокладання які створені за специфікацією HackMaster API (незалежний стандарт). Це стандарт який полегшує створення хаков, а так-же робить більш безпечним їх присутність у системі. Згідно з цим стандартом за всіма Хакамі в системі стежить Менеджер хаков. Це звичайна програма в якому можна подивитися Сісоко всіх хаков, налаштувати їх, і активізувати. br/>
Програмування хаков вимагає більш глибокого знання системи. <В
5. Приклад Розробки Програми для PalmOS
Розглянемо приклад простого додатка - example1.prc (1,5 кб) воно складається з однієї форми. На Формі розташована кнопка, напис, і текстове поле, до форми прикріплено меню. При натисканні на кнопку з'являється повідомлення. Проект програми складається з 3х файлів:
Example1.c - вихідний код мовою С.
Example1.h - імена і номери елементів форми
Example1.rcp - опис ресурсів програми (форма, меню, кнопка, діалог повідомлення).
файл example1.c
# include p> # include "Hw.h"
static FormPtr gpForm;
Boolean Form1_HandleEvent (EventPtr event)
{
switch (event-> eType) {p> case ctlSelectEvent:
if (Event-> data.ctlEnter.controlID == Button1)
FrmCustomAlert (Alert1, "MessageBox!", "", ""); p> break;
case menuEvent:
if (Event-> data.menu.itemID == IDM_about)
FrmCustomAlert (Alert1, "This is Example", "", "");
break;
case frmOpenEvent:
gpForm = FrmGetActiveForm ();
FrmDrawForm (gpForm);
break;
case frmCloseEve...