pb调用外部函数:在PB中调用外部函数

张瑜

在使用PB进行应用开发过程中除了使用PB提供的外我们还可以使用PB的外和过程比如动态连接库中、Windows API以及其他工具软件Software包当我们希望给用户提供些PB所不能提供功能时这时我们就需要使用外部
本文以个厂家提供DLL文件实际操作过程为例来介绍说明如何在外部例子中动态连接库HCOM32.DLL功能是实现微机和某掌上电脑的间通讯本文主要讲述此DLL文件中GetHcSysInfo用于实现读取掌上电脑系统信息功能

创建步骤如下:

建立应用
创建个名为Demo_dll应用并存放在“...\ Demo_dll.pbl”中

创建选单
创建个名为m_主选单该选单和下面将要创建主窗体(w_mdihelp)相关联, 并且定制了相应选单条工具按钮其部分内容见表1
表1 部分选单信息
选单条名称 功能
m_sysinfo 取掌上电脑系统信息
m_exit 退出应用

创建窗体
本例子共用到两个窗口个主窗体和个子窗体它们具体内容见表2各窗体所包含Control控件见表3
表2 窗体设置信息
名称 标题 类型
w_mdihelp 外部演示 mdihelp!

w_sysinfo 读取系统信息 popup!

定义结构体变量
由于该外部用到了tempstru类型结构体变量因此需要在w_sysinfo窗体中对此结构体变量加以定义

添加脚本

(1)声明外部
打开窗口w_sysinfo脚本编辑器从对象下拉列表中选择“Declare”接着从事件下拉列表中选择“Local External Functions”声明如下: FUNCTION long GetHcSysInfo(long nPort, long nBaudrate, lpszSysInfoFile, sysinfo_stru lpBuffer) library “HCOM32.DLL”
功能是读取掌上电脑系统信息其中参数意义分别如下:
nPort为通讯端口号合法值为1-4;
nBaudrate为通讯波特率合法值为115200、38400和9600;
lpszSysInfoFile为存放掌上电脑系统信息文件名;
lpBuffer为用来存放系统信息缓冲区
返回值为0时表示成功否则表示出错
(2)给ApplicationOpen事件添加如下脚本:
not isvalid(w_mdihelp) then
open(w_mdihelp)
end


(3)给选单m_sysinfoClicked事件添加如下脚本:
opensheet(w_sysinfo,w_mdihelp,1,original!)

(4)给窗体w_sysinfo中Control控件cb_openClicked事件添加如下脚本:
rtn
pathname, filename
rtn=GetFileOpenName ("打开文件",pathname,filename,"txt","Text Files (*.txt),*.txt")
rtn<>1 then
messagebox("警告","打开文件出错,将采用默认文件名!",exclamation!)
sle_1.text="c:\windows\temp\sys$info.txt"

sle_1.text=pathname
end


(5)给窗体w_sysinfo中Control控件cb_okClicked事件添加如下脚本:
rtn
filename
sysinfo_stru lpbuffer
filename=sle_1.text
filename="" then
messagebox("警告","系统信息文件名不能为空,请重新输入文件名!",exclamation!)

end
rtn=GetHcSysInfo(1,115200,filename,lpbuffer)
rtn<>0 then
messagebox("提示","获取掌上电脑系统信息出错,原因可能是未和掌上电脑建立连接!")

run("c:\windows\notepad.exe "+filename,normal!)
end
close(w_sysinfo)

(6)给窗体w_sysinfo中Control控件cb_cancelClicked事件添加如下脚本:
close(w_sysinfo)

(7)给选单m_exitClicked事件添加如下脚本:
close(parentwindow)

添加完脚本后我们就可以运行该应用在PowerBuilder 7.0、Windows 98环境下调试通过

表3 窗体包含Control控件
所属窗体 Control控件类型 Control控件名称 Control控件文本
w_mdihelp 主窗体无其他Control控件只需连结主选单即可     
w_sysinfo
text st_1 系统信息文件名
singlelineedit ste_1   
commandbutton cb_open   
commandbutton cb_ok 确定
commandbutton cb_cancel 取消 
Tags:  c语言函数调用 matlab函数调用 函数调用 pb调用外部函数

延伸阅读

最新评论

发表评论