手机操盘手免费体验火热进行
20万人已抢先免费使用
624MHz CPU极速智能HKC G920震憾登场
夏新智能手机专区
主流智能手机音乐播放软件横向评测 最新手机电影
发新话题
打印

[编程] 如何编写DA程序

如何编写DA程序

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

上面的连接好像是日文啊

第一个连接不能用
第二个连接好像是日文 看不明白

踏网嬉游的日文好像很好啊 景仰

有E文的资料吗?当然中文的更好


有人在的地方就有江湖
http://cn.akeysoft.com(中文)
http://www.akeysoft.com(英文)
http://www.akeysoft.com/blog(个人BLOG)
http://www.viathink.com(公司网站)
那两个链接的确是坏了,不过因为我是转的,所以还是原文转过来了。

Hack、DA很多资料是日文的,没有办法。

发新话题