选择显示字体大小

用delphi开发authorware的u32

delphi开发authorware的u32
  函数功能是authorware最突出的特征,利用authorware提供的系统函数能够完成一些复杂的控制任务。对于一些特殊的任务,authorware允许用户自己定义函数,使得程序设计具有更大的灵活性。对于windows系统来说,自定义函数是以动态链接库(dll)文件存储的,因此存储自定义函数的文件与当前交互式应用程序文件是分立。本文介绍一下如何用delphi开发authorware的自定义函数—32 bit u32,本文以delphi开发可在authorware中调用显示message box的u32为例子。虽然authorware attain 5.0已提供了使用knowledge objects 显示message box的功能,但在4.0以前的版本无此功能,这就可用其它语言开发自己的u32,在authorware中调用。 
  开发u32可分为五个步骤: 

创建工程文件

创建函数

创建资源文件

编译资源文件

创建u32 
  1.创建工程文件 
  在file/new选择dll生成一个dll文件,在file/add to project….加入一个包含u32函数代码的单元myunit.pas(此单元在第二步创建函数中详细说明)在uses后必须声明所有可在authorware中调用的函数。例如: 

exports msgbox;
最终的代码如下所似:
library authorware;
uses
  sysutils,classes,
  myunit in 'myunit.pas';
exports msgbox;
begin
end.
  2.创建函数 
  当你创建一个函数可用在authorware中,必须声明为exported 函数在关键字interface 后面加入代码如下: 

 interface
   uses ,dialogs,sysutils,windows;          
function msgbox(msg:string;mbtype:
word;title:string):word;export;
delphi32 需要添加{$ifdef win32} stdcall ;
 ($endif} 在函数声明后面如:
function msgbox(msg:string;mbtype:
word;title:string):word;export;
{$ifdef win32} stdcall ; {$endif}
现在我们为函数加入代码在implementation后面:
     const
    okonly=0;
    okcancel=1;
    abortretryignore=2;
    yesnocancel=3;
    yesno=4;
    retrycancel=5;
    critical=16;
    question=32;
    excalamation=48;
    information=64;
    defaultbutton1=0;
    defaultbutton2=256;
    defaultbutton3=512;
    applicationmodal=0;
    systemmodal=4096;
function strtopch(str:string):pchar;
    var a:pchar;
    begin
      a:=stralloc(length(str)+1);
      strpcopy(a,str);
      strtopch:=a;
    end;
function msgbox(msg:string;mbtype:
word;title:string):word;
 var
  lptext,lpcaption:pchar;
  h:hwnd;
  begin
  lptext:=strtopch(title);
   lpcaption:=strtopch(msg);
    h:=getactivewindow();
    msgbox:=messagebox(h,lptext,lpcaption,mbtype);
  end;
  3.创建资源文件 

  最后我们要做的事情是创建资源文件,这样authorware才能直接调用函数。必须先创建.rc文件然后编译成.res文件。使用记事本创建.rc的资源文件。加入如下定义:我将在后面解释这些定义: 

1 dll_header preload discardable 
begin 
     "msgbox\0", 
     "\0" 
end 
msgbox dll_header preload discardable 
begin 
     "\0", 
     "w\0", 
     "sws\0", 
     "result := msgbox(msg,mbtype,title)\r\n", 
     "\r\n", 
     "show messagebox\0", 
end
  如果一个 dll文件是按authorware调用转换格式编写,则存储于其中的所有自定义函数的目录也包含在该文件中,并且authorware在调用这些函数时所需的信息也包含在内,其目录称为目录源,而且目录源中的每一个函数有相应的定义,这些定义称为定义源。具体格式如下: 

  1. 目录源 

   目录源的格式如下所示:
    dll_header preload discardable
begin
 “functionname [=exportname]\0”, 
“functionname [=exportname]\0”,
….
“functionname [=exportname]\0”,
“\0”
end
 ①  是目录源标识符;
 ② dll_header 是用于创建描述性文字的起始标记;
 ③ begin 表示该目录源文件的开始,
而end则表示该目录源的结尾。
  2.自定义函数的定义格式 

  对于目录源中每一函数都要有一个相应的定义格式,具体格式如下所示: 

  functionname dll_header preload discardable
begin
  “dllfilename\0”
  “returnvalue\0”
  “argumentlist\0”
  “description>”,
  “description”,
   …
  “description\0”
end
① functionname 指的是在目录源中以定义的函数名;
② dll filename 表示存储函数的dll文件名;
③ returnvalue 表示该函数返回值类型;
④ argumentlist 表示该函数中的参数类型列表;
⑤ description 表示该函数描述性正文。
描述性正文可以有很多行组成,但最后一行必须加上“\0”结束符。
  3.参数类型描述格式 

  参数类型用一个大写字母表示,每一个字母表示一个参数格式,如下表所示: 

描述格式 类型 描述格式     类型
   c signed char p far pointer
   b unsigned char f  float
   i signed short integer     d double
   w unsignedshort integer        s handle
   l signed long integer v void
   u unsigned long integer  
  4.编译资源文件 

  把.rc的资源文件保存为a3w.rc(注意不能保存文件名与dll文件名相同否则delphi自己的资源文件会覆盖它),delphi自带的编译文件为brc32.exe,在dos模式下运行: 

  c:\delphi32\bin\brc32 -r a3w.rc –foa3w32.res 

  现在把资源文件加入工程中,返回delphi在view/projcet source打开工程文件在 

  exports msgbox;后可看到:
     {$r *.res}
  删除该行加入: {$ifdef win32}
                   {$r a3w32.res}
               {$else}
                   {$r a3w16.res}
               {$endif}
编译工程文件.
  5.创建u32 

  我们已经创建了32bit的authorware.dll,把它改名成authorware.u32.现在已成功创建了u32.在authorware中调用authorware.u32在运算设计按钮添加代码: 

  msgbox("警告框",1+32+0+4096,"是否退出本系统?")


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons