1 概述
本文对如何编写一个DA程序作一些必要的说明。
1.1 限制
注意:本文不是一篇官方文档
本人认为这篇文章能提供正确信息,但不作任何保证,其中的一些内容是基于贴在pilot-tech-ml讨论组的文章。如果文章存在错误,欢迎指正。
2.必要条件
必须遵守下列规则来编写DA程序
1. 从PalmComputing处得到你所作的DA程序的(Creator ID)号
2. DA程序的数据库类型必须是 "DAcc"
3. 程序代码必须以ID=1000存在代码资源中
4. 启动函数(例如 start() )必须位于源代码起始位置。函数名可任取(注意: CodeWarrior 4.0 以后的版本在项目设定中有进入点(Entry Point)选项。你可以把它设置为你的启动函数,这样你的启动函数就可放在源代码的任何位置)
5. 必须意识到可利用堆空间(heap)比正常程序要小。
6. 可利用栈空间(stack)比堆空间更小。例如,当一个DA程序被DAL3.0(DA Launcher 3.0)启动后,可利用栈空间为 2K 字节。因此任何DA程序都将工作在2K 字节或更少的栈空间中。
7. 不能使用全局和静态变量,具体为:
静态(非常数): 不能使用
静态(常数): CodeWarrior不能用,Gcc能用
动态数组: 可以使用
如果你使用CodeWarrior,项目设置应为如下所示
Target/68K Target >>
Project Type : PalmOS Code Resource
Resource Name: DAcc
Entry Point : start (你自己的启动函数名)
ResType : code
ResID : 1000
Linker/PalmRez Post Linker >>
Output File/Type : DAcc
3. DA编程习惯
3.1 用户界面指南 (山田君提供)
(1) 尽可能只使用一个窗体(Form)
(2) 尽可能不使用菜单. 编辑菜单可用。
(3) 避免全屏显示,
屏幕上应能看到后台程序
(4) 任何DA程序都应该有一个帮助窗口,以便提供DA程序本身的信息,例如作者姓名,DA程序的简单描述,用法限制等等。
3.2 结束DA程序
当用户点击DA程序窗体以外的地方,DA将被终止。当然你也可使用按钮来主动终止程序。
3.3 全局结构变量
为了利用全局变量来在不同函数间共享数据,以下方法是有用的
(1) 在头
文件中定义结构(structure).该结构包含所有用来在不同函数间共享数据的'全局变量'
(2) 当DA程序被启动后,在启动函数中为该结构分配
内存空间,然后初始化。由于栈空间很小,因此你应该使用 MemHandleNew 和 MemHandleLock来分配
内存而不是使用动态变量
(3) 在利用这些全局变量的函数之间传递指向该结构的指针
(4) DA程序结束以前用 MemHandleUnlock 和 MemHandleFree释放所分配的内存
4. 其他
这篇 "如何编写一个DA程序"的文章由 山田君 撰写(DA 程序的创始者) 发表在1998年4月日本的 "DOS/V Power Report" 杂志上
5. 参考资源
山田君的主页
www.tt.rim.or.jp/~tatsushi/
山加藤君的主页
http://member.nifty.ne.jp/yamakado/da/
踏网嬉游 编辑于 2002-12-20 12:38:55