Говорит и показывает Palm Константин Клягин Xakep, номер #069, стр. 069-122-4 Альтернативой FrmGotoForm() является связка FrmPopupForm() и FrmReturnToForm(), с помощью которых возможно наложение одной формы на другую. Алерты Для небольших информационных окошек стоит использовать алерты. В приложении можно определить один алерт на все случаи жизни, назначив ему текстом такую строку: "^1^2^3". Сделаем мы это в конструкторе, поле "Message". Цифры после крышки (^) соответствуют параметрам вызова функции FrmCustomAlert(). Всего их как раз три. Теперь чтобы вывести любое информационное сообщение, мы впредь будем писать такой код: FrmCustomAlert(PalmTVAlert, "This ", "alert ", "rules!"); Все остальное очень доходчиво описано в доке, которую ты обязательно найдешь в \Program Files\Metrowerks\CodeWarrior\CW for Palm OS Support\Documentation\Palm OS 5.0 Docs\. Самым ценным, пожалуй, будет файлик Palm OS Reference.pdf. Базы банных Даже если необходимость в сохранении данных заключается только в записи неких небольших кодов и их названий, нам все равно понадобится место, где их можно хранить. Главным образом, чтобы помимо Палма не пришлось таскать с собой картотеку с этажеркой и библиотекаршей :). Спешу расстроить привыкших к MySQL или Oracle любителей реляционных баз. SQL в Палме и не пахнет, даже если обнюхаешь весь экран заодно со слотом для карточки расширения. Вместо этого нам предлагают набор функций для довольно низкоуровневого доступа к записям, определяющимся в коде на C как struct. Еще один способ - писать записи последовательно с помощью нескольких вызовов DmWrite(), просчитывая смещения каждого поля вручную. Вычитывать их содержимое придется путем парсинга char-указателя на запись. Вообще, многое приходится делать руками. Начиная с проверки на существование базы, поиска, и заканчивая блокированием памяти под данные. При работе с памятью в Palm OS очень рекомендуется вспомнить начало 90-ых годов и их символ - операционку ДОС. Почему? Главным образом потому, что ответственность за все действия с памятью ложится на разработчика. Никаких дворников (garbage collector), std::auto_ptr<> , ни даже alloca(). И если ты, дружок, изнасилуешь операционку, загребая память своими жадными потными ручонками, то тебе самому все это и придется расхлебывать. Вкратце ситуация такова: 1. Память выделяется посредством MemHandleNew(), который возвращает хэндл блока памяти. Не нужно путать хэндл и собственно указатель. Чтобы его добыть, нужно вызвать еще одну стандартную функцию. 2. Указатель на область памяти можно получить с помощью MemHandleLock(). Вызывать эту функцию нужно всегда перед обращением к какому-либо блоку памяти. 3. После того как сеанс работы с блоком памяти закончен, следует вызывать MemHandleUnlock(). 4. Наконец, когда кусок памяти станет совсем ненужным, зовем MemHandleFree(). Вуаля. Сохранение любых данных в Палме предусматривает использование API для работы с БД. Узнаем врага в лицо. |