PB中如何调用多个Director动画.

合集下载

pb中调用api

pb中调用api

pb中调用api摘要:1.引言2.pb中调用API的概念和背景3.pb中调用API的方法和步骤4.pb中调用API的优缺点分析5.结论正文:1.引言在当今信息化时代,API(应用程序编程接口)已经成为软件开发中不可或缺的一部分,它使得不同的软件系统之间能够方便地进行数据交互和功能整合。

特别是在pb(PowerBuilder)这种成熟的开发环境中,掌握pb中调用API的方法对于开发者来说尤为重要。

2.pb中调用API的概念和背景API,即应用程序编程接口,是一种让不同软件之间进行互动的接口规范。

通过API,开发者可以在自己的程序中使用其他软件的功能,从而简化开发过程,提高开发效率。

pb作为一款功能强大的开发工具,提供了丰富的API 供开发者调用。

3.pb中调用API的方法和步骤在pb中调用API,通常需要遵循以下步骤:(1)引入API所需的库文件;(2)创建API对象;(3)调用API方法;(4)处理API返回结果;(5)释放API对象。

具体实现时,开发者需要根据实际情况选择适当的API,并按照API的规范进行调用。

4.pb中调用API的优缺点分析(1)优点:a.提高开发效率:通过调用API,开发者无需从零开始实现功能,可以快速地完成开发任务;b.保证程序兼容性:API遵循一定的规范,有利于保证程序在不同平台和环境下的兼容性;c.易于维护和升级:使用API可以避免重复开发,当底层系统发生变化时,只需更新API即可,减轻了开发者的维护负担。

(2)缺点:a.受限于API功能:调用API时,开发者需要遵循API的规范,可能受到API功能的限制;b.潜在的安全风险:API可能存在潜在的安全隐患,如不进行合理的安全防护,可能导致程序被攻击。

5.结论总之,在pb中调用API是开发过程中常用的一种技术手段,掌握pb中调用API的方法对于提高开发效率和保证程序质量具有重要意义。

pb中调用api

pb中调用api

在PowerBuilder(PB)中调用API,你可以通过声明外部函数和调用这些函数的方式实现。

PowerBuilder是一个用于快速应用开发(RAD)的编程环境,允许开发者构建并维护企业级应用程序。

调用API可以扩展PowerBuilder的功能,使其能够与其他系统或服务进行交互。

下面是在PowerBuilder中调用API的一般步骤:
1.声明外部函数:首先,你需要在PowerBuilder中声明API函数的外部定
义。

这可以通过使用FUNCTION关键字和EXTERNAL子句来完成。

例如,如
果你要调用一个名为MyAPIFunction的API函数,你可以这样声明:
在这个声明中,MyAPIFunction是函数的名称,string parameter是函数的参数,mylibrary.dll是包含API函数的动态链接库(DLL)的名称。

2. 调用API函数:一旦你已经声明了外部函数,你可以在PowerBuilder的脚本中像调用任何其他函数一样调用它。

例如:
在这个例子中,我们调用了之前声明的MyAPIFunction函数,并将结果存储在result变量中。

3. 错误处理:当调用外部API时,总是需要考虑错误处理。

你可以使用PowerBuilder的异常处理机制来捕获和处理在调用API时可能发生的任何错误。

通过这些步骤,你可以在PowerBuilder应用程序中成功地调用和使用API函数。

PB中dynamic调用类型的用法

PB中dynamic调用类型的用法

PB中dynamic调用类型的用法PB中dynamic调用类型的用法说到DYNAMIC调用类型,我们先看看对象、属性、函数和事件的引用方法:应用程序的开发过程实际上就是各种对象的定义和使用过程。

所有对象都有名称,并通过名称相互区分。

访问对象的属性、函数、事件的方法很简单,就是使用圆点作为标记符,具体来说,访问对象属性的格式为:对象名.对象属性例如,把单行编辑框sle_name的用户输入内容送到字符串变量UserEnter的语句可以写成:UserEnter=sle_name.Text其中,sle_name是一个单行编辑框对象的名称,Text是单行编辑框的Text属性。

程序中访问对象的函数与事件的格式为:{ objectname.} { type } { calltype } { when } functionname ( { argumentlist } )其中,大括号所括成分根据情况可以省略,各成分的意义为:objectname是对象名;type取值为FUNCTION或EVENT,用于指明访问函数还是事件,缺省值为FUNCTION;calltype用于指明PowerBuilder 查找函数的时机,有效取值为:STATIC(缺省值):编译时查找函数,若不存在,产生编译错误DYNAMIC:程序运行时查找函数,若不存在,产生运行错误when用于指明函数或事件是立即执行呢还是当前程序段执行完毕后执行,取值为:TRIGGER(缺省值):立即执行POST:当前程序段执行完毕后执行functionname指明调用的函数或事件名称argumentlist给出函数或事件的参数例如,想把输入焦点移动到单行编辑框sle_name上,程序中写上语句:sle_name.SetFocus()即可。

想立即执行按钮cb_name的单击事件处理程序,那么写上语句:cb_name .EVENT TRIGGER Clicked ()即可。

PowerBuilder控件使用手册

PowerBuilder控件使用手册

PB控件使用介绍一、PB中使用Microsoft Web Browser控件步骤:在pb的某窗口中加入OLE对象,选择Insert control(插入控件),然后选中"Microsoft WEB 浏览器",(随系统而定的版本),就可以在这个窗口直接使用IE浏览器控件了。

常用函数:(对这个ole控件取名叫ole_web)ole_web.object.navigate(string ls_url) file://浏览某url,譬如:ole_web.object.navigate('') 就是浏览 页面,当然支持本地文件,也支持本地图片文件的浏览,如jpeg,jpg,gif,png等等,如果是不支持的文件,则直接弹出选择打开文件对话框,和ie一模一样。

ole_web.object.goback() file://回退(如果没有内容可退,则会弹出错误,可以屏蔽该错误)ole_web.object.goforward() file://前进,同上常用事件:documentcomplete : url请求的页面完成;downloadcomplete:url中请求的下载完成;常用属性:ole_web.object.width :pixel高度,需要转换为pbunit高度才可以调整ole_web.object.height:同上ole_web.object.offline:离线方式,true,false两者之一你甚至可以用pb写出一个和ie类似的界面用来进行浏览网页或图片。

二、在程序中打印在程序中如何提供打印功能呢?这里有三种调用打印函数的格式可供选择。

1. 对数据窗口控制或者数据窗口可以使用这种打印格式。

DATAWINDOWNAME.Print(cancel_window)这里cancel_window 是一个布尔值,它指出是否要显示一个用户可以用来中止打印动作的窗口。

pb中API的调用

pb中API的调用

For i=Asc(′D′) to Asc(′Z′)//列举所有可能的CDROM驱动器If GetDriveTypeA(Char(i)+″:″)=5 Then//若找到CDROMMessageBox(″CDROM″,Char(i)+″:″)//显示光盘盘符Exit //退出列举End IfNext3.在PB中如何获取目录信息⑴获取当前目录。

通过GetCurrentDirectory函数可以获取当前目录,该函数声明为:Function Ulong GetCurrentDirectoryA(Ulong buflen, ref String dir) Library ″kernel32.dll″参数2为接收当前目录的字符缓冲区,前面必须加ref表示地址引用;参数1用来指定字符缓冲区的长度。

调用过程为:String curdircurdir=Space(256)//为字符缓冲区开辟内存空间GetCurrentDirectoryA(256,curdir)MessageBox(″Current Directory″,curdir)⑵获取Windows及系统目录。

要用到GetWindowsDirectory和GetSystemDirectory两个函数,须作如下声明:Function Uint GetWindowsDirectoryA(ref String dir,Uint buflen) Library ″kernel32.dll″Function Uint GetSystemDirectoryA(ref String dir,Uint buflen) Library ″kernel32.dll″4.在PB中如何注销当前用户、关闭计算机、重启计算机通过ExitWindowsEx函数可实现这三个功能,首先作如下声明:Function Long ExitWindowsEx(Long uflag,Long nouse) Library ″user32.dll″参数2保留不用,可取0;参数1取0可以注销当前用户,取1可以关闭计算机,取2可以重启计算机,其值再加4表示强制结束“未响应"的进程。

PB调用各类WebService或c#程序

PB调用各类WebService或c#程序

PB调用各类WebService或c#程序慢慢的有很多接口pb都已经无法调用了,还有一些进制计算,位移等pb都无法实现,这时最简单的就是用c#做好,让pb调用。

但是pb只能调用最基础的c++开发的标准dll。

通过无数次的百度,我找到了一个好的方法,也许您已经知道了。

但是我觉得还是要写出来,只要还有一个为此发愁的朋友存在。

谢谢!方法思路是:1、用c#写一个类,方法的参数一定要用标准数据类型,返回值也要是标准数据类型(string、int或者结构等等)。

在这个方法里面调用各类webservice或其他http接口等pb无法直接调用的。

2、我正巧要做一个调用java写的webservice,下面贴出代码,供参考,因为用csc.exe编译程序无法处理引用,所以using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;namespace ysxt{public class ws{public string sendrecv(string sUser, string sPwd){string retu = "";try{xjca.YsxtMainServiceImplService myrefe = new xjca.YsxtMainServiceImplService(); //这里就是解决csc.exe无法编译引用问题的,xjca是在另外一个ysws.cs文件里,这个cs文件不是我写的,也不能写出来,这是用另外一个命令生成出来的,具体命令看本文最后备注myrefe.Url = myUrl;retu = myrefe.sendRecv(sUser, sPwd);}catch (Exception e){return e.Message;//一定要用try....catch,否则pb调用过程中出现错误,都没有办法知道哪里错了,这句话就是关键。

pb知识总结

pb知识总结

用PowerBuilder制作指示灯1999-04-10 00:00来源:作者:责任编辑:·yesky评论(0)相信大家在安装各种软件或微软公司产品时都会注意到那直观可爱的条状指示灯,它总是以最直接的方式告诉我们工作的进程情况,在PowberBuilder 中也可以实现。

1. 创建一个应用程序(working-out)。

2. 创建一个窗口(w_01)。

3. 在应用程序的Open事件中最未尾Open()函数改为Open(w_01)。

4. 编辑w_01窗口。

5. 添加三个控件在w_01窗口上,即两个Rectangle :r_1,r_2 和一个commandButton :cb_1。

6. 将r_1的Fill Color:设为White 将Line Color:设为Black,将X设为243,Y设为645,Width设为1541,Height设为113。

按Apply 或OK即可。

7. 将r_2的Fill Color:设为Blue 将Line Color:设为White,将X设为261,Y设为661,Width设为5,Height设为85。

按“Apply” 或“OK”即可。

8. 在cb_1的clicked事件中添写:r_1.visible= truer_2.visible = trueint locklock=0do while lock <100lock = lock + 1r_2.width=lock*15loop9. 按“Run” 键运行此程序,就会看到一条从头走到尾的像安装Win98一样的指未灯出现在你的程序窗口上。

注*此程序只是作为一个指示灯,那什么时候指示灯该向前走,什么时候指示灯该停,只要想办法用变量给Lock赋值就可以了。

(Lige)用PowerBuilder制作多媒体动画 2001-02-06 00:00在枯燥乏味的应用程序界面上嵌入动感十足的图片不仅能为程序增色不少,而且还可以吸引用户的注意力。

威力导演20使用教程

威力导演20使用教程

威力导演20使用教程
1、打开"PowerDirector"视频剪辑工具软件操作主界面。

2、选择"文件"->"导入"->"媒体文件"菜单。

3、从本地电脑上选择导入两个视频格式文件素材。

4、用鼠标拖拽两个视频到"同一个视频轨道"编辑区中。

5、选择左侧工具栏上的"转场室"菜单项,从中选择一款转场特效模板。

6、用"鼠标左键"选择并拖拽"转场特效"模板到两个视频轨道的之间的衔接位置处。

7、用"鼠标右键"选中"转场模板"组件,再选择弹出菜单中的"修
改转场"菜单项。

8、可自定义修改"转场时间"、"转场行为"、"转场方向"等属性参数。

9、点击"播放"按钮,可预览一下视频"转场特效"处理后的效果。

最后再选择"制作"菜单,操作并完成将视频导出到电脑上。

1、打开威力导演,导入视频文件,可以看到画面中正中间有人影,
需要进行裁切;
2、选中该视频,点击工具——威力工具;
3、进入设置界面,点击“裁切与缩放”,然后双击右侧的裁切/缩放;
4、在弹出的菜单中进行设置,拖住视频画面进行裁切,还可以左右移动选择框、从而移动正中央的标志;下载地址:/softdown/213016.htm
5、这就是裁切好的画面,如图。

pb dynamic用法

pb dynamic用法

pb dynamic用法1. 引言在计算机编程中,动态库(即动态链接库)是指包含可以被多个程序共享的代码和数据的库文件,它在程序运行时被动态加载到内存中。

动态库有许多优势,例如代码共享、运行时库版本可更新等。

而pb dynamic则是一个用于处理动态库的工具,它提供了一种简单灵活的方式来使用和管理动态库。

2. pb dynamic的基本概念pb dynamic是一个专为动态库而设计的命令行工具,它可以帮助开发人员更加方便地使用和管理动态库。

使用pb dynamic,可以动态加载和卸载动态库,获取动态库中的符号信息,以及解析动态库的依赖关系等。

3. pb dynamic的安装和配置3.1 安装pb dynamic要使用pb dynamic,首先需要将其安装到计算机中。

目前,pb dynamic已经在多个操作系统上提供了官方的安装包,包括Windows、Linux和macOS等。

在Windows上,可以直接从pb dynamic的官方网站下载安装包,并按照安装向导进行安装。

在Linux上,可以使用包管理器来安装pb dynamic。

例如,在Ubuntu上,可以通过以下命令来安装pb dynamic:$ sudo apt-get install pb-dynamic在macOS上,可以使用Homebrew来安装pb dynamic。

首先需要安装Homebrew,然后执行以下命令安装pb dynamic:$ brew install pb-dynamic3.2 配置pb dynamic在安装完pb dynamic后,还需要进行一些配置。

配置主要包括设置动态库的搜索路径和设置环境变量等。

配置动态库的搜索路径可以帮助pb dynamic找到动态库的位置。

可以通过以下方式配置搜索路径:•在命令行中使用-L选项指定动态库的搜索路径,例如:$ pb-dynamic -L /path/to/library•在环境变量LD_LIBRARY_PATH中设置动态库的搜索路径,例如:$ export LD_LIBRARY_PATH="/path/to/library"设置环境变量可以帮助pb dynamic获取正确的运行时库版本。

PB控件说明

PB控件说明

[PB]-控件(一)////////////////////////////////命令按钮-CommandButton-cb_1图象按钮-PictureButton-pb_1【事件】◆Clicked控件单击时◆Constructor在窗口的打开事件之前立即触发◆Destructor在窗口的关闭事件之后立即触发◆DragDrop当被拖动对象释放时触发◆DragEnter被拖动对象的中心通过边缘进入时触发◆DragLeave被拖动对象的中心离开时触发◆DragWithin被拖动对象的中心位于其内时触发◆GetFocus在接受焦点之前(在选中并激活之前)触发◆LoseFocus当失去焦点时触发◆Other当非powerbuilder事件消息发生时触发◆RButtonDown鼠标右键按下时触发◆Help【属性】命令按钮有24个属性,图形按钮除了具有和命令按钮完全相同的24个属性外,还有另外5个属性用来设置图形和文字的显示。

▲Visible取值为False时,不显示此按钮▲Enabled取值为False时,按钮为灰色,不可用▲Default取值为True时,表示该按钮是缺省按钮,当用户没有选择控件,按Enter键时触发该按钮的Clicked事件▲Cancel取值为True时,表示当用户单击Esc键时,可以触发按钮的Clicked事件▲FlatStyle////////////////////////////////列表框-listBox图形列表框-pictureListBox【属性】listbox有35个属性,picturelistbox有40个属性,其中35个和listbox完全相同,另外5个用来设定图形的相关属性。

▲Sor ted,指定列表框中的内容是否排序,不管数字还是字符都按照字符处理,按照ASCII大小进行排序▲VscrollBar、HscrollBar,指定当项目纵向或横向显示不下时,是否显示滚动条▲MultiSelect,此属性为True时表示使用鼠标可以直接同时选中多项▲ExtendSelect,也有进行多项同时选择的属性,但选择方法不同于MultiSelect属性,必须配合Ctrl或Shift按钮,当同时指定这两个属性时,ExtendedSelect属性将会屏蔽MultiSelect属性▲DisableNoScroll,此属性为True时,不管是否必须要滚动条,都显示滚动条;为False时只有在项目多,需要显示滚动条时显示滚动条▲ItemPictureIndex[]integer类型的只读数组,使用该数组可以获取每个图片项目的索引。

在PB应用中实现声音与动画

在PB应用中实现声音与动画

在PB应用中实现声音与动画在设计应用程序过程中, 恰当地应用电脑声音与动画技术, 可以为用户提供更加直观、友好、引人注目的操作界面。

下面笔者介绍一下在PowerBuild 应用中实现声音与动画的一种简便方法:1.作为举例, 创建一个MDI 风格的窗口w_audani。

在这个窗口上放置一个含声音、动画两个带图标的菜单项的菜单m_audani, 一个图象框p_1。

整个窗口的外观如下:2.制备声音和图象文件。

本例中选用了一个adu.wav 的声音文件和四个ani1.bmp、ani2.bmp 、ani3.bmp、ani4.bmp 用于动画素材的分离图象文件。

3.定义程序编制中要用到的变量: (1) 定义一个整型实例变量, 用作图象计数integer picturenub (2) 定义一个外部函数, 使在PowerBuild 编程中可以调用Windows 32-bit API 声音播放函数function boolean sndplaysounda(string soundname, uint flags) &library "winmm.dll"4.为窗口w_audani 编制事件处理程序。

程序行中// 后的为说明文字。

(1) 在窗口的打开(Open) 事件下输入程序://声音菜单项置选中属性m_audani.m_1.m_aud.checked = true//动画菜单项置选中属性m_audani.m_1.m_ani.checked = true//图象计数器置初值picturenub = 1//定义每隔半秒钟触发一次窗口的timer事件timer(0.5,this)---- (2) 在窗口的计时器(Timer) 事件下输入程序:---- // 如果声音菜单项被选中, 则调用Windows 32-bit API 声音播放函数播放声音文件。

函数第一个参数指出要播放的声音文件名, 第二个指出函数播放属性, 属性3 为异步、不缺省IF m_audani.m_1.m_aud.checked = true THENsndplaysounda("aud.wav",3)END IF//如果动画菜单项被选中,则播放动画IF m_audani.m_1.m_ani.checked = true THENCHOOSE CASE picturenub//当图象计数为1时,播放第1张图象CASE 1p_1.picturename = "ani1.bmp"//当图象计数为2时,播放第2张图象CASE 2p_1.picturename = "ani2.bmp"//当图象计数为3时,播放第3张图象CASE 3p_1.picturename = "ani3.bmp"//当图象计数为4时,播放第4张图象CASE 4p_1.picturename = "ani4.bmp"//恢复图象计数picturenub = 0END CHOOSE//图象计数增1picturenub ++END IF5.为菜单m_audani 编制事件处理程序:(1) 在菜单项声音(m_aud) 的单击(Clicked) 事件下输入程序:// 使该菜单项的选中属性反转起到开关的作用, 即原来为选中的变为不选中, 未选中的则现在变成选中this.checked = not this.checked(2) 在菜单项动画(m_ani) 的单击(Clicked) 事件下输入程序://同样,使该菜单项的选中属性反转this.checked = not this.checked6.执行该程序的大致情况是:(1) 启动程序后, 自动打开以上图示的窗口;(2) 窗口计时器按每半秒钟触发一次事件处理程序, 播放声音和图象文件, 周而复始以产生动画效果;(3) 单击声音或动画菜单项( 工具图标), 可以控制声音或动画是否播放。

在PB中动态调用函数

在PB中动态调用函数

在PB中动态调用函数目前流行的大部分应用程序中都提供了Undo功能,在PB中也可以利用Undo()函数实现该功能。

Undo()函数可用于DataWindow, EditMask, MultiLineEdit, RichTextEdit和SingleLineEdit 对象,如果只对某一个对象进行Undo操作,只需在Undo菜单项的单击事件中键入如下脚本:Objectname.undo(),但是当窗口中有多个对象,我们在编写脚本时并不知道要对哪个对象执行undo()操作,如何解决这一问题呢?在PowerBuilder中,undo()等函数只能用于可视对象,而所有可视对象均继承自系统对象类GraphicObject。

因此我们可以定义一个GraphicObject对象的实例变量go_object,等到运行时再用getfocus()函数确定具体操作对象。

然后用Typeof()函数确定当前对象的类型,再用Choose case语句根据不同的类型引用不同的实例变量,代码如下:graphicobject go_objectDataWindow dw_objectEditMask em_objectMultiLineEdit mle_objectRichTextEdit rte_objectSingleLineEdit sle_objectgo_object=getfocus()choose case TypeOf(go_object)case DataWindow!dw_object=go_objectdw_object.undo()case EditMask!em_object=go_objectem_object.undo()case MultiLineEdit!mle_object=go_objectmle_object.undo()case RichTextEdit!rte_object=go_objectrte_object.undo()case SingleLineEdit!sle_object=go_objectsle_object.undo()case elsemessagebox("Error","Can not undo")end choose其实我们可以用动态调用函数的方法简单地解决这一问题(只需三行代码),即对GraphicObject对象调用undo()函数,然后在函数名前加上关键字Dynamic。

在PB中播放动画和语音

在PB中播放动画和语音

在PB中播放动画和语音(深圳:独孤求败 2003-05-27)PowerBuilder是一套强大的数据库应用系统开发工具。

如果能在应用系统的开头播放一小段动画和语音,无疑会使系统赏心悦目、更具风采。

3DS是基于PC的三维动画制作软件,用户可以直接使用其丰富的材质库及模型文件,能够在较短的时间内制作出优秀的动画效果。

采用3DS制作动画封面并渲染成START.FLC文件。

下面主要介绍在PowerBu ilder中,通过调用动态链接库(DLL),来播放动画和语音。

1.MCI设备驱动程序的安装Windows的媒体播放器中缺省设置只能够播放扩展名为avi的动画文件,要播放flc文件,需要在Wi ndows中装入相应的MCI(媒体控制接口)驱动程序。

可在Windows中装入一个小巧的动画播放软件Aapla yw,在安装提示中,注意选择“安装MCI驱动程序”一项,则该驱动程序便自动安装。

我们同样也可以采用手动安装的方法,首先拷贝播放动画所需的两个动态库和一个驱动程序:aaplay.dll、aav ga.dll、mciaap.drv到windowsιsystem目录下,然后按下面所示修改三个参数配置文件。

win.ini文件应有以下内容:[mciextensions]flcΚanimation1fliΚanimation1aasΚanima tion1[IAAnimationEditor]PlayDisplay ZoomedΚ1CleaDisplayΚ1HideScriptΚ1PlayBarIn ScriptΚ1PlayLoopΚ0PlayDisplayEr rorsΚ1ClearImageAt EndΚ0ClearDisplayAtEndΚ0DisplayVisibleΚ1ImagevisibleΚ1ToolBoxVisibleΚ1MouseVisibleΚ1DisplayZoomedΚ1AutoHideScriptΚ1IconCommentsΚ1IconDataΚ1[AAPLAYAnimation]DualScreenΚ0FullScreenΚAAVGA.DLLFullInstalledΚ1system.ini文件应有以下内容:[mci]Animation1Κmciaap.drvcontrol.ini文件应有以下内容:[drivers.desc]mciaap.drvΚ[MCI]AutodeskAnimation1.10安装完毕后再打开媒体播放器,用鼠标选择“设备”菜单项,这时会发现比原来多了一项设备名(Au todeskAnima torAnimation),选择此设备,在打开文件菜单中选择文件时的扩展名列表框中有“.f lc文件”类型。

用pb实现Flash动画播放-电脑资料

用pb实现Flash动画播放-电脑资料

用pb实现Flash动画播放-电脑资料1. 前言PowerBuilder(以下简称PB)是一种面向对象、快速开发数据库的开发平台,常用于数据库的开发,FLASH动画不仅包含动画,还可有声音等形成非常形象的动感画面,在PB开发的程序中加入FLASH动画,使得程序更具活力,为用户创造一个更加友好的交互式界面,。

下面介绍在PB8.0数据库编程中用Flash 5提供的OLE控件“SwFLASH.ocx”实现动画播放的一种方法。

2. PB中OLE控件的使用在PB8.0环境下使用“SwFLASH.ocx”控件,首先创建一个窗口,然后在窗体上添加一个OLE控件,用OLE连接FLASH 5的控件“SwFLASH.ocx”其具体作法如下:(1)选菜单"Cotrols | OLE",显示窗口"Insert object",选"Insert Control",在Control Tyle栏里找出"Shockware FLASH Object"(若该控件尚未注册,可先选"Register Now"对该控件进行注册);回到PB窗口,用鼠标点击安放此控件在窗口上并调整大小。

(2)在编程中使用FLASH5.0的控件“SwFLASH.ocx”提供的主要属性:Movie属性:存放FLASH动画文件的URL's:在本机磁盘时写全目录名,或Internet上按浏览网页的地址,例如:f:\touch\start.swf。

Quality(分辨率)属性:播放的分辨率,有0(low),1(AutoLow),2(Hight),3(AutoHight),4(Best)五个值。

Scale属性:播放的屏幕,有0(ShowAll), 1(NoBorder), 2(ExactFit)三个值。

Loop(循环播放)属性:true, false 。

menu(菜单)属性:true, false 。

PB中如何调用多个Director动画

PB中如何调用多个Director动画

PB中如何调用多个Director动画(深圳:独孤求败 2003-05-26)(摘要:用PB作界面是十分方便的,用Diredtor作动画是非常容易的。

怎样把两者给合起来呢?本文介绍了一种方法,使PB的应用程序能方便地调用Director的动画)一、概述PowerBuilder(以下简称PB)是一个基于Windows、NT或Motif环境下面向对象的客户机/服务器(Clie nt/Server)软件开发工具,用PB开发应用程序实际上是用各种不同的画笔(Painter)设计各种对象,每个对象完成相应的特定功能,然后用其编程语言PowerScript 有机地调用它们,从而完成一个应用程序。

Director是一个功能强大、运用广泛、基于角色的多媒体开发工具,可用来制作动画,交互电影,市场营销展示等各种各样的多媒体产品.它能把文字、图形、图象、声音、动画、视频等各种多媒体项目数据汇集在一起。

并可生成脱离Director环境直接在Windows下运行的可执行文件。

现在市场上好多多媒体产品都是用Director制作的,如《万事无忧》、《卡通英语乐园》、《十万个为什么》等。

利用Diredtor制作多媒体产品比较简单,对软件制作人员的要求较低,开发周期也较短,并且通过其编程语言Lingo编写脚本能使开发出来的多媒体产品具有很强的人机交互能力。

二、问题提出用PB来作界面是非常方便的,但是用它作动画却不容易;用Director作动画是非常简单的,但是用它作界面却不够理想。

能否把他们结合起来:即用PB来作界面,用Director作动画,然后用PB调用Dir ector动画?由于Director没有提供外部接口让其它应用程序来调用Director 动画。

有一个办法是把Director 源文件都生成可执文件, 然后用PowerBuilder的Run(app_name)函数去调用Director的可执文件。

但因为D irector的可执行文件比源文件大得多,所以这样做不仅浪费空间,而且也不易实现。

PB中实现动画特效

PB中实现动画特效

PB中实现动画特效API函数声明如下:1〕function uint GetDC(uint hwnd) library "c:\windows\system\user32.dll"//取得一个显示器设备描述表。

参数hwnd标识将绘图的窗口的句柄。

若成功,则返回指定窗口的设备描述表,若失败,则返回为NULL。

2〕function long BitBlt(uint hdcdest,int xdest,int ydest,int wdest,int hdest,uint hdcsrc,int xsrc,int ysrc,ulong dwrop) library "c:\windows\system\gdi32.dll"//将源设备描述表中的图片转移到目的设备描述表中。

参数hdcdest标识图象转移的目的DC,xdest和ydest标识目的DC的位置,wdest和hdest标识图象的宽度与高度,hwndsrc标识图象转移的来源DC,xsrc和ysrc标识来源DC的位置,dwrop标识图象转移方式。

若成功返回值为0,若失败返回值为非零。

3〕function long StretchBlt(uint hddest,int xdest,int ydest,int wdest,int hdest,uint hdsrc,int xsrc,int ysrc,int wsrc,int hsrc,ulong dwrop) library "c:\windows\system\gdi32.dll"//将源设备描述表中的图片放大、缩小、翻转、转移到目的设备描述表中。

参数意义同BitBlt中的参数意义相同,多出的wsrc和hsrc为来源图象的宽度与高度。

4〕function ulong ReleaseDC(ulong hwnd,ulong hdc) library "c:\windows\system\user32.dll" //将由GetDC取得的设备描述表释放掉。

pb编程小窍门

pb编程小窍门

PB 技巧在数据出口中实现动画要实现动画,必须要有定时器,在数据窗口中已经有了一个定时器,双击数据窗口将弹出的对话框,在Timer Interval中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。

比如要改变某字段的背景颜色,可设ackgound.color=RGB(Integer(Right(string(now(),'hhmmssf'),1))*256/10,Integer(Right(string(now(),'hhmm ssf'),1))*256/10,0)当然,您不仅可以改变背景颜色,而且可以改变字体等等任何属性,使他可以动起来!动态地改变数据窗口中的图形的样式在程序中动态改变数据窗口中图形的样式有时是十分必要的,因为不同的数据用不同的样式看可能更清楚。

本人从Pb的例子程序中总结出方法,可以动态地任意地以图形化的方式改变图形数据窗口、嵌入式、复合式数据窗口中的图形的式样。

界面如下:使用的方法如下:1.将解压缩后的pbl库中的对象(w_graph_type,w_graph_type2,u_grap_gallery)拷贝到您的pbl库中,或直接包含该库;2.有两种方法可以在程序中改变图形样式,方法一,使用代码如下:openwithParm(w_graph_type,dw_1)其中:dw_1为您要改变风格的窗口;这种方法只适合图形风格的数据窗口,不适合于复合报表、嵌入报表。

方法二,代码如下:int li_typeopen(w_graph_type2)li_type=message.doubleParmdw_1.object.gr_1.Graphtype=li_type//如果使用复合报表、嵌入报表dw_1.object.d_1.object.gr_1.Graphtype=li_type//d_1为嵌入报表名,gr_1为名字(您不需要更改)从两种方法的代码可以看出,第一种方法将数据窗口控制作为参数传给窗口,在窗口中直接改变他的样式,比较简单但。

pb多线程

pb多线程

SharedObject系列函数和共享对象有关的函数包括:SharedObjectRegister、SharedObjectGet、SharedObjectUnregister和SharedObjectDirectory函数。

首先,用SharedObjectRegister函数初始化共享对象,并建立一个单独的线程。

如:SharedObjectRegister (“ccuo_thread” ,“thread1” )其中ccuo_thread是一个共享的自定义类用户对象的类名,thread1是共享对象实例的共享名。

如果SharedObjectRegister函数返回Success,则新线程创建成功。

然后,执行指定代码。

有两种方法让新线程执行指定的代码:一种是在自定义类用户对象的constructor事件中编写脚本,新线程创建后就会自动执行该事件脚本;另一种方法是使用SharedObjectGet函数。

该函数实现共享对象实例的引用,如:SharedObjectGet ( “thread1” ,inv_thread )其中inv_thread是用来存储共享对象实例的一个对象变量,要求与ccuo_thread具有同一个类名。

最后,通过使用Post语句,即以inv_thread.Post of_function(agrs)的形式,异步调用共享对象的函数of_function。

在完成任务后,可以用SharedObjectUnregister函数中止线程,也可用SharedObjectDirectory函数列出所有有效的共享对象。

函数调用部分本文所用Win32 API函数原型为:Function Ulong FindWindowA ( String lpClassName ,String lpWindowName ) Library “user32.dll”Function Ulong GetTickCount ( ) Library “kernel32.dll”Function Ulong GetDesktopWindow ( ) Library “user32.dll”Function Boolean GetWindowRect ( Ulong hWnd ,ref stc_rect lpRect ) Library “user32.dll” Function Boolean MoveWindow ( Ulong hWnd ,int X ,int Y ,int nWidth ,int nHeight ,Boolean bRepaint ) Library “user32.dll”下面具体讨论如何实现消息对话框的居中显示://声明对象变量ccuo_thread lccuo_thread//创建新线程SharedObjectRegister (…ccuo_thread‟ ,…thread_center‟ )//引用实例SharedObjectGet (…thread_center‟ ,lccuo_thread )//调用窗口居中函数lccuo_thread.Post of_center (…#32770‟ ,…Demostration‟ ,2000 )//创建消息对话框MessageBox ( …Demostration‟ ,…Copyright(c) 2001 by Y.L.Sun‟ )//中止线程SharedObjectunRegister ( …thread_center‟ )函数实现部分实现窗口居中显示的函数是自定义类用户对象ccuo_thread的对象函数of_center,其实现代码如下:ccuo_thread.of_center ( String lpclassname ,Stringlpwindowname , Ulong dwtimeout ) return Boolean//lpclassname:消息对话框的类名(#32770)//lpwindowname:消息对话框的标题//dwtimeout:超时计数Ulong lul_hwnd //存放消息对话框的句柄Ulong lul_start //计时开始时刻的值lul_start = GetTickCount ( ) //计时开始do//查找顶层窗口lul_hwnd=FindWindowA ( lpclassname ,lpwindowname )//找到顶层窗口后,跳出循环if lul_hwnd <> 0 then exit//判断是否已超时loop while GetTickCount( )-lul_start< dwtimeout//没有找到消息对话框if lul_hwnd = 0 thenreturn falseelse//对话框居中return of_center ( 0 ,lul_hwnd )end ifof_center的重载函数代码如下:ccuo_thread.of_center ( Ulong hwndp ,Ulong hwndc ) return Boolean//hwndp:父窗口的句柄,值为0时认为是桌面//hwndc:子窗口的句柄int li_x //窗口的X坐标int li_y //窗口的Y坐标stc_rect lstc_parent //父窗口的4边坐标stc_rect lstc_child //子窗口的4边坐标//值为0时认为是桌面if hwndp = 0 then hwndparent =GetDesktopWindow ( )//获得窗口的4边坐标if not GetWindowRect ( hwndcurrent ,lstc_child ) then return falseif not GetWindowRect ( hwndparent ,lstc_parent ) then return falseli_x = (( lstc_parent.right -lstc_parent.left ) -( lstc_child.right -lstc_child.left )) /2li_y = (( lstc_parent.bottom -lstc_parent.top ) -( lstc_child.bottom -lstc_child.top )) /2//计算子窗口的X、Y坐标if li_x < 0 or li_y < 0 then return false//移动子窗口if not MoveWindow ( hwndcurrent ,li_x ,li_y ,lstc_child.right -lstc_child.left ,lstc_child.bottom -lstc_child.top ,false ) then return falsereturn true本文代码在PB 7.0下通过。

PB调用C#的DLL动态库方法

PB调用C#的DLL动态库方法

PB调用C#的DLL动态库方法一、示例先在windows系统环境下注册C#的动态库gacutil /i Iron.dllregasm Iron.dll我们PB如何调用这个DLL了.看下图(调用方式为OLE)增加一个实例变量OLEObject encryption在窗体的Open()事件里面写下以下代码encryption = Create OLEObjectencryption.ConnectToNewObject("encry.encryption") "encry" 是你C#写的DLL的命名空间的名称"encryption"是你的DLL的类名称.别搞错了.在[执行MD5加密]的按钮脚本写如下代码long ll_statusstring ls_textstring ls_dotextls_text = sle_1.Textls_dotext = encryption.md5(ls_text,32)sle_2.Text = ls_dotext如果一切OK的话,会出现下面的画面至此,程序结束.可以跟大家共同参考,学习.判断OLE控件是否注册的办法,ConnectToNewObject用法、要判断OLE控件是否注册?在PB里面可以使用ConnectToNewObject的办法.ConnectToNewObject用法例子如下:OLEObject demo;long my_returndemo = CREATE OLEObjectmy_return=demo.ConnectToNewObject(“{BB4780D9-391E-41B5-B366-434ADCFD7D10}”)上面的返回结果有好几种,详细请参考帮助说明书.当返回0时,表示此OLE控件已经注册成了.ConnectToNewObject原本的用法是这样的:oleobject.ConnectToNewObject ( classname )classname 是控件名称.在PB窗口中插入一个ole控件时可以看到已注册的OLE控件的信息,包括控件的名称.但是你使用控件名称来连接控件时,有可能返回-2或-3,就是提示你说没有这个控件.实际上却已经成功注册了.这种问题都是非一般的问题,有点邪门.解决办法:classname 可以是控件名称,也可以控件ID,就是OLE控件属性里面的GUID了(也可以查找注册获取GUID).本文的例子ConnectToNewObject(“{BB4780D9-391E-41B5-B366-434ADCFD7D10}”),就是使用GUID来调用的.结果成功了.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PB中如何调用多个Director动画
(深圳:独孤求败2003-05-26)
(摘要:用PB作界面是十分方便的,用Diredtor作动画是非常容易的。

怎样把两者给合起来呢?本文介绍了一种方法,使PB的应用程序能方便地调用Director的动画)
一、概述
PowerBuilder(以下简称PB)是一个基于Windows、NT或Motif环境下面向对象的客户机/服务器(C lient/Server)软件开发工具,用PB开发应用程序实际上是用各种不同的画笔(Painter)设计各种对象,每个对象完成相应的特定功能,然后用其编程语言PowerScript 有机地调用它们,从而完成一个应用程序。

Director是一个功能强大、运用广泛、基于角色的多媒体开发工具,可用来制作动画,交互电影,市场营销展示等各种各样的多媒体产品.它能把文字、图形、图象、声音、动画、视频等各种多媒体项目数据汇集在一起。

并可生成脱离Director环境直接在Windows下运行的可执行文件。

现在市场上好多多媒体产品都是用Director制作的,如《万事无忧》、《卡通英语乐园》、《十万个为什么》等。

利用Diredtor制作多媒体产品比较简单,对软件制作人员的要求较低,开发周期也较短,并且通过其编程语言Lingo编写脚本能使开发出来的多媒体产品具有很强的人机交互能力。

二、问题提出
用PB来作界面是非常方便的,但是用它作动画却不容易;用Director作动画是非常简单的,但是用它作界面却不够理想。

能否把他们结合起来:即用PB来作界面,用Director作动画,然后用PB调用Director动画?
由于Director没有提供外部接口让其它应用程序来调用Director 动画。

有一个办法是把Dire ctor 源文件都生成可执文件, 然后用PowerBuilder的Run(app_name)函数去调用Director的可执文件。

但因为Director的可执行文件比源文件大得多,所以这样做不仅浪费空间,而且也不易实现。

三、主要步骤
利用下面的方法,可以实现在PB中只需一个Director的可执行文件(假设为Temp.exe)就可以实现调用多个Director动画。

主要步骤是:
1、用PB的应用程序用Run(Temp)函数调用Temp,并给Temp传递一个参数,此参数假设为要播放动画的文件名;
2、Temp运行后,根据PB传递的参数播放相应的动画;
3、Director动画播放完毕,返回到PB的应用程序。

四、具体实现和举例
下图是用PB做的一个窗口(取名为Main),包含一个静态文本框st_1,两个按钮cb_1(确定)、cb _2(取消)和一个列表框lb_1.
例子的功能:列表框中显示10个动画选项,用户选择任意一项,按“确定”按钮则播放相应的动画,动画播放完毕返回到Main。

窗口Main的open事件的脚本为:
int i
for i=1 to 10
lb_1.additem("动画"+string(i))//给列表框加10项。

next
由于只用一个Director可执行文件Temp.exe,每次PB要播放动画时都用RUN(Temp),那么Temp. exe如何得知要播放那个动画呢?所以在PB调用动画时给Temp.exe传递一个参数是必需的。

因为Direct or不能获取命令行参数,所以调用Temp.exe时采用命令行参数给Temp.exe传递参数已行不通。

一个可行的方法是PB在调用Temp.exe之前把参数写到一个临时文件Filename.txt中,当Temp启动后,再从File name.txt中去取参数。

所以cb_1的Clicked事件的脚本为:
int n
int li_FileNum
n=lb_1.selectedindex()
li_FileNum = FileOpen("filename.txt", &
StreamMode!, Write!, LockWrite!, Replace!)//打开文件
filewrite(li_fileNum,"d:\eng\am\am"+string(n,"00"))
//假设动画文件在“d:\eng\am”目录下,文件名分别为am01.dir、am02.dir...am10.dir
fileclose(li_filenum)
st_1.text="正在启动文件,请稍候..."//给用户一个提示信息
run("temp")
st_1.text="请您选择:"
按钮cb_2的clicked事件的脚本:
close(parent)
列表框lb_1的doubleclicked事件的脚本:
cb_1.triggerevent(clicked!)
下面介绍文件Temp.exe的实现,Director本身没的提供有关的文件读写的函数,但是它可以调用外部的DLL(动态链接库),但它调用的动态链接库格式与一般的DLL有些区别,详细资料请参阅Direct or V4.0中Xobjecv。

Director提供了一个名为Fileio.dll的动态链接库,它包含了一些有关文件操作的函数,可直接调用(更详细资料请参阅Director手册)。

文件Temp的功能非常简单,只是从文件filename.txt中读取PB传递过来的参数(动画的文件名)。

然后用Play Movie filename命令去调用以参数为名的Director动画即可,这个步骤可以在Temp文件中的Startmovie事件中(在Director中叫Handle而不叫事件)完成。

程序如下:
global filename,greadobject
on startmovie
OPENXLIB "FILEIO" //打开外部的动态链接库
put fileio(mnew,"read",The PathName&"filename.txt") into greadobject
put greadobject(mreadLine) into filename
//把filename.txt的内容读一行到变量filename中。

greadobject(mdispose)
CLOSEXLIB "FILEIO"-关闭外部的动态链接库play movie filename--播放动画
end
做完之后把它生成可执行文件。

至此,程序的功能已实现。

相关文档
最新文档