Authorware UCD 开发大揭秘(四)

2008-04-09 04:21:47来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

用过或者说热爱DEPHI的朋友们都遇到过这种情况: 得到一个非常非常酷的VCL元件,确只能在IDE开发环境下运行,一旦编译成EXE文件单独运行就不能用了,偶尔”良心”的也会在这时弹出一个对话框,要你花XX美元注册并购买这个元件(这正是我等痛恨的,有同感的请举手).假设我们开发了一个Authorware插件并想用它赚几个Money的话,就要学 这就要求我们的程序能够判别出用户使用插件时是在开发环境还是运行环境.通过获取当前,但在Authorware下行不通,我试过发现:Authorware在开发时的窗口 和打包以后单独运行的窗口的类名是相同的!其实在Authorware3.0以后Marcomedia公司就提供了一个结构型参数,可以通过这个参数来获取运行状态,该结构型参数原本是C 语言描述的,现在本人将它转化为Object Pascal型声明如下:

type

AWPARAM = record

size: Word; //该结构的长度

hwnd: HWND; //Authorware窗口的句柄

authoring: Bool;//是否处在开发状态,是返回true 否返回false

reserved1: LongInt;//保留

reserved2: LongInt;//保留

end {AWPARAM};

FAR = AWPARAM;

AWPARAM_PTR = ^AWPARAM //声明作为远指针调用

好了,将该参数结构描述加入工程文件(在uses语句之后),现在让我们使用这个参数来实现一个商业化的软件,还是以上面这个输入框函数为例,要求当用户在Athorware开发环境下使用时一切正常,当用户在打包

后生成的EXE文件中调用时弹出一个要求注册的模式对话框。

首先将上面函数改为:

……

function displayinputbox(winhandle: AWPARAM_PTR;aption,tiptxt,defaulttxt:Pchar):Thandle;stdcall;

……

begin //从此处插入以下代码

if winhandle.authoring=false then

messagebox(winhandle.hwnd,’这是一个未注册的Authorware插件’,’请注册’,MB_OK);

……

可是,现在的问题是:如果用户不调用AWPARAM 这个参数,岂不是会出错?

其实,Marcomedia公司早就想到了这一点。该参数只提供给程序员使用,对于用户而言,该参数

是隐藏的,不透明的,是一个“虚拟参数”也就是用户在使用这个函数时根本就不加入这个参数,而是由Authorware自行加入,就好像这个参数根本就不存在.

为了让Authorware识别这个参数,在字符串资源文件中需要作如下修改:

……

"ASSS\0",(第一个“A”表示要求Authorware传递一个AWPRRAM参数,切记!)

……

现在你可以坐在家里等收钱吧

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:实现QQ窗体的缩入伸出功能(文章来自csdn)

下一篇:Authorware UCD 开发大揭秘(九)