本书详细地讲解了Palm OS编程,内容涵盖了使用C/C++进行Palm OS开发的各个方面。全书共23章,分为7个部分,包括:Palm OS入门、创建Palm OS应用程序、Palm OS编程、信息存储、手持设备的外部通信、与桌面计算机同步、高级主题。书中内容由浅入深,除了结合实例对Palm OS的系统API进行细致的讲解外,还涉及到一些较为深入的高级主题。此外,书中对Palm OS开发中常用的几种开发工具,如Metrowerks CodeWarrior和Falch.net DeveloperStudio等,也做了全面而详细的介绍。本书的最后附有术语表,列出了与Palm OS编程相关的大量术语。\r\n 无论对想要入门的Palm OS开发新手,还是想进一步提高的“门内汉”,甚至对于Palm OS高级开发者,此书都会对您有所帮助,读者都将在书中找到自己所需的内容。
第1部分 Palm OS入门\r\n\r\n第1章 理解Palm OS平台 3\r\n1.1 Palm OS的理念 3\r\n1.2 桌面和手持应用程序设计之比较 4\r\n1.2.1 对高性能的期望 4\r\n1.2.2 有限的输入方式 5\r\n1.2.3 狭小的屏幕 5\r\n1.2.4 电池寿命和运算能力 6\r\n1.2.5 有限的内存 6\r\n1.2.6 用RAM做数据持久存储 6\r\n1.3 与桌面相连接 6\r\n1.4 硬件版本之比较 7\r\n1.5 展望未来 13\r\n1.6 总结 13\r\n\r\n第2章 理解Palm OS 14\r\n2.1 Palm OS手持设备如何使用电力 14\r\n2.2 运行Palm OS应用程序 15\r\n2.2.1 响应启动码(Launch Code) 15\r\n2.2.2 事件(Event)处理 16\r\n2.3 管理内存 16\r\n2.3.1 动态RAM 17\r\n2.3.2 存储RAM 18\r\n2.4 使用资源 20\r\n2.5 设计程序的用户界面 21\r\n2.5.1 窗体(Form) 21\r\n2.5.2 提示(Alert) 22\r\n2.5.3 菜单(Menu) 22\r\n2.5.4 表格(Table) 23\r\n2.5.5 列表(List) 23\r\n2.5.6 弹出式列表触发器(Pop-up Trigger) 24\r\n2.5.7 按钮(Button) 24\r\n2.5.8 重复按钮(Repeating Button) 24\r\n2.5.9 选择触发器(Selector Trigger) 24\r\n2.5.10 单选按钮(Push Button) 25\r\n2.5.11 复选框(Check Box) 25\r\n2.5.12 滑动条(Slider) 25\r\n2.5.13 标签(Label) 26\r\n2.5.14 窗体位图(Form Bitmap) 26\r\n2.5.15 文本域(Field) 26\r\n2.5.16 Graffiti状态指示器(Shift Indicator) 26\r\n2.5.17 滚动条(Scroll Bar) 27\r\n2.5.18 自定义控件(Gadget) 27\r\n2.6 与其他设备通信 28\r\n2.6.1 串行通信 28\r\n2.6.2 TCP/IP 28\r\n2.6.3 蓝牙(Bluetooth) 29\r\n2.6.4 网页剪辑(Web Clipping) 29\r\n2.6.5 电话 30\r\n2.6.6 IrDA 30\r\n2.6.7 数据交换 30\r\n2.7 Palm OS版本比较 30\r\n2.7.1 2.0版的变化 31\r\n2.7.2 3.0版的变化 31\r\n2.7.3 3.1版的变化 32\r\n2.7.4 3.2版的变化 32\r\n2.7.5 3.3版的变化 32\r\n2.7.6 3.5版的变化 32\r\n2.7.7 4.0版的变化 33\r\n2.7.8 5.0版的变化 33\r\n2.8 总结 34\r\n\r\n第2部分 创建Palm OS应用程序\r\n\r\n第3章 开发工具介绍 37\r\n3.1 使用CodeWarrior for Palm OS 37\r\n3.1.1 熟悉IDE 39\r\n3.1.2 改变目标设置 46\r\n3.1.3 在CodeWarrior中编译和链接 48\r\n3.2 使用GNU PRC-Tools 48\r\n3.2.1 使用PRC-Tools编译和链接 50\r\n3.2.2 使用make自动构建 51\r\n3.3 使用Falch.net DeveloperStudio 54\r\n3.3.1 熟悉IDE 55\r\n3.3.2 在DeveloperStudio中编译和链接 61\r\n3.4 总结 61\r\n\r\n第4章 编写第一个Palm OS应用程序 62\r\n4.1 创建Hello World 1 62\r\n4.1.1 包含头文件 63\r\n4.1.2 进入应用程序 64\r\n4.1.3 启动应用程序 65\r\n4.1.4 关闭应用程序 66\r\n4.1.5 处理事件 66\r\n4.1.6 建立窗体 68\r\n4.1.7 响应窗体事件 69\r\n4.2 创建Hello World 2 69\r\n4.2.1 定义资源常量 70\r\n4.2.2 响应窗体事件 73\r\n4.2.3 处理菜单事件 74\r\n4.2.4 显示提示和使用文本域 76\r\n4.3 在Palm OS中使用内存 77\r\n4.4 整合所有代码 81\r\n4.5 总结 87\r\n\r\n第5章 调试程序 88\r\n5.1 使用Palm OS模拟器 88\r\n5.1.1 控制POSE 90\r\n5.1.2 初次运行POSE 91\r\n5.1.3 安装ROM映像 92\r\n5.1.4 安装应用程序 94\r\n5.1.5 保存和恢复配置 95\r\n5.1.6 调整POSE的设置 95\r\n5.1.7 掌握Gremlin自动测试工具 97\r\n5.1.8 模拟HotSync同步操作 100\r\n5.1.9 模拟扩展卡 101\r\n5.1.10 捕获屏幕截图 103\r\n5.1.11 处理POSE的错误 103\r\n5.2 使用Palm OS仿真器(Simulator) 104\r\n5.2.1 启动仿真器 105\r\n5.2.2 装载ROM映像 106\r\n5.2.3 安装应用程序和数据 106\r\n5.2.4 运行Gremlins自动测试工具 106\r\n5.2.5 查看数据库、内存与事件 107\r\n5.2.6 保存和装载存储快照 109\r\n5.3 进行源码级调试 109\r\n5.3.1 用CodeWarrior调试 109\r\n5.3.2 用GDB调试 112\r\n5.3.3 用DeveloperStudio调试 114\r\n5.4 使用Palm Reporter跟踪应用程序 116\r\n5.5 复位Palm OS手持设备 118\r\n5.6 使用开发者Graffiti快捷命令 118\r\n5.7 使用Palm OS错误管理器 119\r\n5.8 总结 120\r\n\r\n第3部分 Palm OS编程\r\n\r\n第6章 资源的创建与理解 123\r\n6.1 遵循Palm OS用户界面指南 123\r\n6.1.1 创建快速的应用程序 124\r\n6.1.2 突出常用功能 124\r\n6.1.3 设计易用的程序 125\r\n6.1.4 保持Palm OS风格 127\r\n6.2 使用Constructor工具创建资源 130\r\n6.3 使用PilRC创建资源 139\r\n6.3.1 创建应用程序资源 139\r\n6.3.2 为资源指定常量 143\r\n6.3.3 查看Hello World程序的资源文件 143\r\n6.4 使用DeveloperStudio创建资源 145\r\n6.5 总结 154\r\n\r\n第7章 创建窗体和菜单 155\r\n7.1 使用Constructor创建窗体 155\r\n7.1.1 设置对象的通用属性 157\r\n7.1.2 设置对象的特有属性 158\r\n7.2 使用PilRC创建窗体 168\r\n7.2.1 创建窗体资源 168\r\n7.2.2 在窗体中添加对象 169\r\n7.3 使用DeveloperStudio创建窗体 177\r\n7.4 使用Constructor创建菜单 180\r\n7.5 使用Rez创建菜单 182\r\n7.6 使用PilRC创建菜单 186\r\n7.7 使用DeveloperStudio创建菜单 188\r\n7.8 介绍Librarian——一个应用程序的例子 189\r\n7.8.1 在列表视图中显示多条记录 190\r\n7.8.2 在记录视图中显示书籍的详细信息 191\r\n7.8.3 在编辑视图中编辑记录 191\r\n7.8.4 介绍Librarian的菜单 192\r\n7.9 总结 194\r\n\r\n第8章 用户界面元件编程 195\r\n8.1 提示对话框编程 195\r\n8.2 窗体编程 197\r\n8.2.1 切换到新的窗体 197\r\n8.2.2 使用FrmDoDialog函数显示模式对话框 198\r\n8.2.3 使用FrmPopupForm函数显示模式对话框 200\r\n8.2.4 更新窗体 201\r\n8.3 窗体中对象的编程 203\r\n8.3.1 处理窗体对象的事件 204\r\n8.3.2 取得对象的指针 206\r\n8.3.3 隐藏和显示窗体对象 207\r\n8.4 复选框和单选按钮的编程 210\r\n8.5 选择触发器编程 211\r\n8.5.1 选择日期和时间 211\r\n8.5.2 选择颜色 213\r\n8.5.3 调节亮度和对比度 215\r\n8.6 文本域编程 215\r\n8.6.1 为文本域设置内存句柄 215\r\n8.6.2 修改文本域 216\r\n8.6.3 从文本域中获取文本 217\r\n8.6.4 设置文本域的焦点 218\r\n8.6.5 设置文本域的属性 219\r\n8.7 自定义控件编程 220\r\n8.8 列表和弹出式列表编程 225\r\n8.8.1 获取列表数据 225\r\n8.8.2 操作列表 226\r\n8.8.3 动态列表编程 227\r\n8.8.4 处理弹出式列表 228\r\n8.9 菜单编程 229\r\n8.9.1 使用MenuEraseStatus函数 230\r\n8.9.2 隐藏菜单项 230\r\n8.9.3 命令工具栏编程 231\r\n8.10 总结 234\r\n\r\n第9章 系统元素编程 235\r\n9.1 检查所支持的功能 235\r\n9.1.1 确定操作系统的版本 236\r\n9.1.2 检查其他个别功能 237\r\n9.2 操作文本 238\r\n9.2.1 使用字体函数 239\r\n9.2.2 使用字符串函数 242\r\n9.2.3 使用字符宏 243\r\n9.3 处理手写笔事件 245\r\n9.4 处理按键事件 248\r\n9.5 查找电话号码 251\r\n9.6 启动应用程序 252\r\n9.6.1 调用系统的应用程序启动器 252\r\n9.6.2 直接启动应用程序 253\r\n9.6.3 全局发送启动码 255\r\n9.6.4 创建自己的启动码 255\r\n9.7 产生随机数 255\r\n9.8 管理电源 256\r\n9.9 识别设备 257\r\n9.10 使用剪贴板 258\r\n9.11 总结 259\r\n\r\n第10章 图形和声音编程 261\r\n10.1 管理绘图区 262\r\n10.1.1 理解窗口 262\r\n10.1.2 保存和恢复绘图状态 266\r\n10.1.3 取得和设置色深 267\r\n10.1.4 使用颜色表 271\r\n10.2 绘制图形和文本 273\r\n10.2.1 设置传输模式 273\r\n10.2.2 设置前景色、背景色和文字颜色 274\r\n10.2.3 绘制像素 275\r\n10.2.4 绘制直线 275\r\n10.2.5 绘制矩形 276\r\n10.2.6 绘制文本 279\r\n10.2.7 绘制位图 279\r\n10.2.8 改变用户界面的颜色 281\r\n10.3 高分辨率屏幕编程 284\r\n10.3.1 使用高密度显示功能参数组 284\r\n10.3.2 检测可用的屏幕密度 285\r\n10.3.3 设置和取得坐标系统 285\r\n10.3.4 在坐标系统之间转换 286\r\n10.4 播放声音 287\r\n10.4.1 播放简单声音 287\r\n10.4.2 播放采样声音 288\r\n10.5 总结 290\r\n\r\n第11章 闹钟和时间编程 291\r\n11.1 设定闹钟 291\r\n11.1.1 设定一个闹钟 292\r\n11.1.2 响应闹钟 293\r\n11.1.3 响应其他启动码 295\r\n11.2 操作时间值 296\r\n11.2.1 获取和设定时间值 296\r\n11.2.2 转换时间值 297\r\n11.2.3 改变时间值 298\r\n11.3 遵循用户的日期和时间设置 298\r\n11.4 引起用户的注意 300\r\n11.4.1 请求注意 301\r\n11.4.2 响应提醒管理器 303\r\n11.4.3 管理引起注意的尝试 306\r\n11.4.4 阻止提醒指示器出现 306\r\n11.5 总结 306\r\n\r\n第12章 表格编程 308\r\n12.1 创建简单的表格 309\r\n12.1.1 理解表格如何工作 309\r\n12.1.2 初始化表格 311\r\n12.1.3 处理表格事件 322\r\n12.1.4 隐藏行和列 322\r\n12.2 创建更复杂的表格 324\r\n12.2.1 将表格与数据关联 325\r\n12.2.2 滚动表格 339\r\n12.2.3 处理表格的文本域 349\r\n12.3 总结 353\r\n\r\n第4部分 信息存储\r\n\r\n第13章 存取数据 357\r\n13.1 理解数据管理器 357\r\n13.1.1 记录数据库 358\r\n13.1.2 资源数据库 359\r\n13.2 数据库操作 360\r\n13.2.1 创建数据库 360\r\n13.2.2 打开数据库 362\r\n13.2.3 关闭数据库 363\r\n13.2.4 查找数据库 363\r\n13.2.5 删除数据库 365\r\n13.2.6 取得和修改数据库信息 365\r\n13.2.7 创建应用程序信息块 368\r\n13.3 存储应用程序配置 371\r\n13.4 使用功能内存 374\r\n13.5 总结 375\r\n\r\n第14章 操作记录 377\r\n14.1 使用记录 377\r\n14.1.1 深入Librarian例子程序的记录 378\r\n14.1.2 比较记录 382\r\n14.1.3 查找记录 387\r\n14.1.4 创建记录 389\r\n14.1.5 删除记录 391\r\n14.1.6 读取记录 393\r\n14.1.7 修改记录 393\r\n14.1.8 随版本更改数据库结构 402\r\n14.1.9 排序记录 406\r\n14.1.10 取得和修改记录信息 407\r\n14.1.11 分类记录 408\r\n14.1.12 实现私密记录 415\r\n14.1.13 调整记录大小 416\r\n14.2 使用资源 416\r\n14.2.1 查找资源 418\r\n14.2.2 创建资源 419\r\n14.2.3 删除资源 420\r\n14.2.4 读取资源 420\r\n14.2.5 取得和修改资源信息 422\r\n14.2.6 调整资源大小 422\r\n14.3 实现全局查找功能 422\r\n14.3.1 处理sysAppLaunchCmdSaveData 423\r\n14.3.2 处理sysAppLaunchCmdFind 423\r\n14.3.3 处理sysAppLaunchCmdGoto 426\r\n14.4 总结 429\r\n\r\n第15章 使用辅助存储器 431\r\n15.1 理解扩展管理器 431\r\n15.2 理解辅助存储器 432\r\n15.2.1 组织文件和目录 433\r\n15.2.2 运行辅助存储器上的程序 433\r\n15.3 使用虚拟文件系统 434\r\n15.3.1 检验VFS管理器的存在 435\r\n15.3.2 监测扩展卡的插入和拔出 435\r\n15.3.3 取得卷引用 438\r\n15.3.4 获取和设置卷标 439\r\n15.3.5 查找卷信息 440\r\n15.3.6 创建目录 440\r\n15.3.7 创建文件 442\r\n15.3.8 删除文件和目录 444\r\n15.3.9 打开和关闭文件 447\r\n15.3.10 取得和设置文件信息 447\r\n15.3.11 读取文件数据 449\r\n15.3.12 定位文件指针 452\r\n15.3.13 写数据到文件 454\r\n15.3.14 查找文件 456\r\n15.3.15 处理Palm OS数据库 457\r\n15.4 总结 458\r\n\r\n第5部分 手持设备的外部通信\r\n\r\n第16章 通过交换管理器共享数据 463\r\n16.1 使用交换管理器 464\r\n16.1.1 注册数据类型 465\r\n16.1.2 发送数据 469\r\n16.1.3 自定义数据接收对话框 480\r\n16.1.4 接收数据 483\r\n16.1.5 显示传送的记录 489\r\n16.1.6 调试传送功能 489\r\n16.1.7 发送应用程序和数据库 490\r\n16.2 理解红外库 492\r\n16.3 总结 493\r\n\r\n第17章 使用串口 495\r\n17.1 理解Palm OS串行通信 495\r\n17.2 使用串行管理器 497\r\n17.2.1 使用新式串行管理器 498\r\n17.2.2 使用旧式串行管理器 510\r\n17.3 总结 512\r\n\r\n第18章 网络通信 514\r\n18.1 理解TCP/IP网络 514\r\n18.2 用Palm OS网络库编程 515\r\n18.2.1 获得网络库引用 517\r\n18.2.2 打开网络库 517\r\n18.2.3 解析主机名和地址 518\r\n18.2.4 查找服务端口 522\r\n18.2.5 打开套接字 524\r\n18.2.6 连接套接字 524\r\n18.2.7 发送和接收数据 525\r\n18.2.8 断开套接字 528\r\n18.2.9 关闭套接字 529\r\n18.2.10 关闭网络库 529\r\n18.3 总结 530\r\n\r\n第19章 创建网页剪辑应用程序 531\r\n19.1 理解网页剪辑 531\r\n19.1.1 理解网页剪辑的安全性 532\r\n19.1.2 设计网页剪辑应用程序和网页剪辑 533\r\n19.2 构建网页剪辑应用程序 534\r\n19.2.1 组织HTML文件 534\r\n19.2.2 定义Header标签 535\r\n19.2.3 格式化文本 536\r\n19.2.4 链接到其他页面和应用程序 537\r\n19.2.5 构造查询表单 541\r\n19.2.6 添加图片 545\r\n19.2.7 使用网页剪辑应用程序构建器 546\r\n19.2.8 考察一个网页剪辑应用程序的例子 548\r\n19.3 生成网页剪辑 550\r\n19.3.1 定义Header标签 550\r\n19.3.2 为桌面浏览器创建剪辑页面 551\r\n19.3.3 链接到外部网页剪辑 551\r\n19.3.4 添加图片 551\r\n19.3.5 考察一个网页剪辑的例子 552\r\n19.4 测试网页剪辑应用程序 555\r\n19.5 总结 556\r\n\r\n第6部分 与桌面计算机同步\r\n\r\n第20章 学习管道基础 559\r\n20.1 理解管道 560\r\n20.2 设计管道 563\r\n20.3 安装管道 564\r\n20.3.1 手工安装管道 564\r\n20.3.2 创建自动管道安装 567\r\n20.4 在HotSync日志中记录动作 569\r\n20.5 总结 571\r\n\r\n第21章 创建管道 572\r\n21.1 使用管道向导 572\r\n21.1.1 选择管道类型 573\r\n21.1.2 选择手持端应用程序 573\r\n21.1.3 选择数据传输类型 574\r\n21.1.4 选择管道的功能特性 574\r\n21.1.5 确认类名和文件名 575\r\n21.2 实现管道入口点 576\r\n21.2.1 实现GetConduitInfo 577\r\n21.2.2 实现GetConduitName 579\r\n21.2.3 实现GetConduitVersion 579\r\n21.2.4 实现OpenConduit 579\r\n21.2.5 实现Configuration入口点 582\r\n21.3 使用Palm通用管道基础类 587\r\n21.3.1 遵循通用管道控制流 588\r\n21.3.2 描述桌面记录格式 589\r\n21.3.3 实现数据存储和读取 591\r\n21.3.4 CPalmRecord的数据转换 598\r\n21.3.5 同步应用程序信息块 607\r\n21.4 使用Palm MFC基础类 607\r\n21.4.1 遵循MFC管道控制流 608\r\n21.4.2 实现Monitor类 609\r\n21.4.3 实现Table类 610\r\n21.4.4 实现Schema类 612\r\n21.4.5 实现Record类 613\r\n21.4.6 实现Link Converter类 616\r\n21.5 使用同步管理器API 618\r\n21.5.1 注册和注销管道 619\r\n21.5.2 打开和关闭手持设备数据库 619\r\n21.5.3 遍历数据库记录 621\r\n21.5.4 读取和写入记录 623\r\n21.5.5 删除记录 624\r\n21.5.6 维持连接 624\r\n21.6 总结 625\r\n\r\n第7部分 高级主题\r\n\r\n第22章 导向轮编程 629\r\n22.1 Sony Jog Dial编程 630\r\n22.1.1 理解JogAssist 632\r\n22.1.2 绕过JogAssist工作 633\r\n22.2 HandEra Jog Wheel编程 638\r\n22.3 Treo Rocker Switch编程 639\r\n22.4 总结 640\r\n\r\n第23章 拾遗 641\r\n23.1 创建大型应用程序 641\r\n23.1.1 突破32KB的屏障 641\r\n23.1.2 将应用程序分段 643\r\n23.2 为应用程序增加自定义字体 648\r\n23.3 动态创建用户界面 652\r\n23.4 应用程序本地化 654\r\n23.5 使用文件流(File Streaming)API 659\r\n23.5.1 打开文件流 660\r\n23.5.2 关闭文件流 662\r\n23.5.3 获取文件流错误 662\r\n23.5.4 删除文件流 662\r\n23.5.5 在文件流中定位 663\r\n23.5.6 读写文件流数据 663\r\n23.6 总结 664\r\n\r\n术语表 665
无封面