请问VC里的哪种数据类型能和PB里的REF STRING相匹配?

解决方案 »

  1.   

    不清楚
    不过最好多用Windows Data Types
      

  2.   

    VC中使用BSTR *pbszData,即可在pb中调用;
    如果是COM组件中声明[retval out] BSTR *pbszData
      

  3.   

    PB是一种面向C/S方式的数据库应用程序的开发工具,PB拥有数据窗口、嵌入式SQL语句等技术,在开发数据库应用程序时显得特别方便。但在涉及到系统底层的一些功能时,PB本身提供的功能就有些不尽如人意。因为Windows操作系统提供给用户的接口是C语言函数形式,而VC在调用系统底层功能方面,从编程角度来讲就要方便得多。VC还有许多PB所不具备的优点,比如数据结构表达能力强,实现复杂算法的程序相对容易开发,运行速度快等。此外,不少外围设备的驱动程序提供的也是C接口。若能将这两种语言结合起来使用,充分发挥它们各自的优点,将会大大提高开发效率、增强应用程序的功能。 
    动态链接库简述 
    动态链接库(Dynamic-Link Library)简称DLL,是基于Windows系统的程序设计中的一个非常重要的组成部分。使用DLL的优点是: 
    1. DLL的动态连接不是将库代码拷贝,而是在程序中记录函数的入口点和接口,在程序执行时才将库代码装入内存。如果有多个程序使用相同的DLL,也只需将DLL在内存中装载一次,以节省内存的开销。 
    2. DLL是基于Windows系统的程序模块,不仅包含可执行代码,还可包含数据与各种资源,扩大了库文件的使用范围。 
    3. 对于一个大型的、不断更新的应用程序,可将许多重复的功能编写成DLL,用主程序调用,这样既能减少开发的工作量,又能提高访问速度。 
    4. DLL丰富了PowerScript语言的编程能力,可以使用PowerScript函数集之外的函数。 
    5. DLL独立于编程语言,大多数Windows编程环境都允许主程序调用DLL中的函数。可以用VC、PB、VB、汇编语言等建立DLL,然后在不同语言开发的应用程序中调用它。 
    一个实例 
    1. 用VC创建DLL  
    在VC 6.0中可以用“MFC AppWizard”自动生成“Win32 DLL”和“MFC AppWizard DLL”。启动VC之后,从“File/New”菜单项,选择“New”对话框中的“Projects”标签,选择新项目为“MFC AppWizard(DLL)”,可输入工程名为dl-lwl,然后点击“OK”按钮,弹出选择DLL类型对话框后,再选择DLL类型为:Regular DLL using shared MFC DLL,最后点击“Finish”按钮。这样,AppWizard将自动创建一个包含基本要素的DLL框架,接着手工添加相关的代码。 
    2. 打开dl-lwl.cpp文件,添加如下函数 
    extern “C”_declspec(dllexport) 
    int _stdcall output_number(int x) 
    { int y; 
    char msg[20]; 
    y=x >>2; 
    sprintf(msg, “计算结果:%o ! ”, y); 
    ::MessageBox(NULL, msg, “信息”, MB_OK); 
    return 0; 

    以上声明了函数output_number(),输入参数为一个整型数,作移位运算后,用对话框将计算结果显示出来。 
    接着打开dl-lwl.def文件,在EXPORTS下输入函数说明,文件内容如下: 
    LIBRARY “pbdll” 
    DESCRIPTION ‘pbdll Windows Dynamic Link Library’ 
    EXPORTS 
    ; Explicit exports can go here 
    out_num @1 
    最后编译生成动态链接库dl-lwl.dll。 
    3. 在PB中调用VC创建的DLL函数  
    为了在PB应用程序中调用存放在动态链接库dl-lwl.dll中的函数output_number(),需要事先声明。在声明时必须明确: 
    ● 函数的作用范围,全局声明可使该函数用于整个应用,局部声明仅使该函数在对象的脚本中有效; 
    ● 必须指明函数返回的数据类型、传递参数的个数和类型,并将存放该函数的动态链接库的名字告诉PB。  
    声明完成后,应用程序可以调用函数output_number(),调用该函数的代码与调用任何标准的PowerScript函数类似,区别就在于: 该函数存放在动态链接库中,调用时动态链接库装入内存,然后函数执行。对PB中被调用的函数使用声明:  
    Function int output_number(int irow) LIBRARY “dl-lwl.dll” 
    在PB中调用函数output_number()的代码如下: 
    int irow,retcode 
    irow=dw_1.rowcount() 
    retcode=out_num(irow) 
    装入动态链接库(DLL) 
    当PB应用程序调用外部函数时,动态链接库装入内存。操作系统会在如下位置查找动态链接库:EXE文件运行的目录或Windows的系统目录。假如没找到所需的DLL,应用程序将产生运行错误并显示错误提示。如果找到DLL,它就被映射到程序的内存空间。  
    小 结 
    动态链接库(DLL)能为不同开发环境下的应用编程提供方便,可节省内存空间,提高运行速度,同时也丰富了PowerScript语言的编程能力。动态链接库的使用也拓展了PB的可编程空间、实现了PB本身所不能实现的功能,是对PB开发语言有效的补充。