一、创建一个非可视对象来封装第三方函数库。
单击主工具栏中的user object 图标。在new user object对话框中选取custom类型。
为该对象申明局部的位于mhand.dll文件中的外部函数getfiledatetime。将该对象保存为n_file_functions。
改变w_maintain窗口中的"取文件日期和时间"按钮的clicked事件的代码。
代码如下图所示。其中定义了n_file_functions类型的对象nvo_file_functions。并用create语句创建该对象。然后调用该对象的函数getfiledatetime取得文件名称编辑框中输入的文件的日期和时间。根据该函数的返回值判断是否成功执行。返回值的含义由DLL中的函数确定。
二、解析一个功能完善的非可视用户对象。
下面是一个功能完善的非可视用户对象的例子,封装了与打印相关的大部分功能。
从class10\sr文件夹中导入n_printer和w_pageset两个对象。(请同时导入其它对象以便学习、使用。)
先来使用这两个对象查看实际运行的效果。
改变w_print_preview窗口的"打印设置"按钮的clicked事件代码:
原来在该脚本中调用的是我们自己创建的w_stu_printsetup窗口对象。现在调用w_pageset窗口,该窗口使用了n_printer非可视对象。
下图是w_pageset窗口对象。
下图是程序运行后的效果。
下面来查看w_pageset窗口的相关脚本代码。
"打印设置"按钮的clicked事件,其中使用了n_printer类型的对象lnv_printer。
该对象lnv_printer在该窗口的实例变量中定义。
下面来了解一下n_printer非可视用户对象。
该对象的实例变量:
该对象的局部外部函数定义:
该对象的自定义结构体:
windows系统API函数的参数使用大量的结构体类型,如要在PB中使用必须按相同的结构定义结构体类型。这些API函数使用的结构体的定义可以通过手册或MSDN查看。下图是MSDN中对FILETIME结构的说明:
该对象的自定义函数:
三、下面来介绍一下其它的封装windows API函数的非可视对象。
这是封装了图形设备接口函数的n_cst_gdi32对象:
这是封装了internet功能调用的n_cst_wininet对象:
这是封装了windows系统核心功能调用的n_cst_kernerl32对象:
数据空间