zoukankan      html  css  js  c++  java
  • [导入]ASP进阶:VB中的模块,类,ActiveX与API的使用


    这几天搞了点c/s结构的程序设计, 由于ASP用得比较熟练,所以VB6.0自然成为我首选的开发工具. 在学习过程中,我结合自己的经验总结下VB中的一些高级应用,并且体会这种应用给我们所带来的好处.

    一、模块 (Module)

    在VB中,模块会优先执行,其实说白了,模块就象是全局的过程和函数调用.这是初步的提高代码可复用性的途径。我想有经验的ASP(VBSCRIPT,以后都只用VBScript来写Asp程序)程序员都用过<!--#Include file=""-->这条语句吧,这对提高代码的可复用性是比较方便的,在VB里模块就完成了这个功能.值得注意的是在模块中可以定义Sub Main() 过程,并且在启动里面可以让程序从Main()过程进入.这有点象c,c++中的main()函数. 不过模块的代码可重用级别还是停留在过程,函数调用上.

    二、类模块

    在VB中,可以建立类模块.类模块类似于ASP中的类.我想有经验的Asp程序员应该都有自己的类库吧.一般情况下我们怎么在ASP中引用自己的类库呢?对,还是include,只要把类文件包含进来就行了. 在调用的时候只要 Set xxx= new ClassName 就行了.这个和ASP中也是一样的.用类模块有什么好处呢? 因为使用类可以定义一些公用的方法和过程,可以将代码的可重用行达到一个更高的高度.

    三、ActiveX技术

    可能大家会想,无论是用模块还是类模块,可能很多功能都会在下一个项目用到.如果这个时候我们需要那些功能的话,可以直接把类模块和模块代码考到Vb项目中.在ASP中,我们只要把类代码做成文件,然后在其他应用include进来就行了.但有一个问题,那就是代码的封装行.因为不论是类模块还是模块,或者ASP中的写有类的.asp文件,代码可以被人看并加以修改.有没有办法能使代码不让人看到呢?答案是肯定的,这个就是ActiveX控件技术. ActiveX 的优点在于可以不同的语言编写ActiveX控件,只要符合约定的规范就行,然后可以被其他语言调用.而且代码是编译好了的.这个对于ASP来说,可以提高运行速度.好了,废话少说,下面看看给出一个实际使用的例子吧:

    1.首先建立一个ActiveX dll工程,然后把名字写成TestDll.在类模块里的代码为:

    Option Explicit
    Private mdbl_augend As Double
    Private mdbl_addend As Double

    Public Property Get augend() As Double
    augend = mdbl_augend
    End Property

    Public Property Let augend(ByVal vNewValue As Double)
    mdbl_augend = vNewValue
    End Property

    Public Property Get addend() As Double
    addend = mdbl_addend

    End Property

    Public Property Let addend(ByVal vNewValue As Double)
    mdbl_addend = vNewValue
    End Property

    Public Function Plus()
    Plus = augend + addend
    End Function

    2.文件->生成TestDll.dll. 这样我们就得到了一个名为TestDll.dll的文件了,这个就是一个ActiveX控件了.这个控件有2个属性,一个函数.可以计算出2个属性的和.

    3.VB调用TestDll.dll. 新建一个exe工程.工程->引用->浏览,选中TestDll.dll文件,然后随便拖个按钮,在按钮里写以下代码:

    Private Sub Command1_Click()
    Set objSum = New Sum
    objSum.augend = 10.52
    objSum.addend = 382.41
    Result = objSum.Plus
    MsgBox Result
    Set objSum = Nothing
    End Sub
    代码就不用我解释了.你可以看到弹出一个对话框显示2个属性的和.

    3.ASP调用TestDll.dll文件. ASP调用dll文件和vb也差不多.刚才vb调用时我们要添加一个引用来找到dll文件.而ASP需要注册以后才能调用.所以先建立一个setup.bat文件,里面写如下代码:Regsvr32.exe TestDll.dll 如果这个bat文件不在TestDll.dll的同级目录下面,你需要加上TestDll.dll的绝对路径. 或者直接在运行里敲Regsvr32.exe E:\website\work\dll\TestDll.dll.这样TestDll.dll就注册了,下面我们写个文件来测试一下:

    <%
    Dim objSum
    Set objSum = Server.CreateObject("TestDll.Sum")
    objSum.augend = 10.52
    objSum.addend = 382.41
    Result = objSum.Plus
    Response.Write Result
    Set objSum = Nothing
    %>

    怎么样,网页上是不是显示了392.93呢? 这样ASP就调用了这个TestDll.dll文件了.

    其实在ASP中调用ActiveX控件可以有很多好处,如果是大型的B/S软件项目,这样可以将业务逻辑封装在ActiveX里面,而ASP只要调用就行了.唯一的缺点就是需要注册组件.不过我们有一个变通的方法,在ASP5.0以上可以支持类,我们可以用VBScript的类来代替组件,这样也能实现封装,只不过在性能上要慢些. 不过现在.net技术解决这个问题. 因为asp.net是建立在.net framework基础上的,所以用.net写出的dll文件不需要注册. 具体的以后可以出.net MVC模式的文章同大家探讨.

    四、API调用.

    VB的强大之处就是可以调用WinAPI,这样原本VB完成不了的功能都可以通过API来完成. 要调用API首先也需要引用它.VB里提供了一个API Show的小工具给我们使用.这样可以省去很多调用API的麻烦.要调用API,首先要建立模块,在模块里申明调用的API,下面我写一个小程序,就是让窗口始终显示在最上面.调用API代码如下:

    Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long


    '常量声明
    Global Const SWP_HIDEWINDOW = &H80
    Global Const SWP_NOACTIVATE = &H10
    Global Const SWP_NOCOPYBITS = &H100
    Global Const SWP_NOMOVE = &H2
    Global Const SWP_NOOWNERZORDER = &H200
    Global Const SWP_NOREDRAW = &H8
    Global Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
    Global Const SWP_NOSIZE = &H1
    Global Const SWP_NOZORDER = &H4
    Global Const SWP_SHOWWINDOW = &H40
    Global Const HWND_BOTTOM = 1
    Global Const HWND_BROADCAST = &HFFFF&
    Global Const HWND_DESKTOP = 0
    Global Const HWND_NOTOPMOST = -2
    Global Const HWND_TOPMOST = -1
    Global Const HWND_TOP = 0
    Global Const Flags = SWP_NOMOVE Or SWP_NOSIZE

    然后我们在窗体里加如下代码:

    Private Sub Form_Load()
    Dim Success As Long
    Success = SetWindowPos(Me.hwnd, HWND_TOPMOST, 10, 0, 0, 0, Flags)
    End Sub

    运行下看看,是不是窗体始终在最前面呢?

    研究了下VB后发现,其实VB还是提供了一些封装的技术的.比如模块,类模块,还有ActiveX,并且VB能够调用API来弥补自身功能的不足.最主要的是VB简单易学,而且还提供了很多数据库操作的控件.

    由于本人用VB用得比较少,有错误之处还请指出. http://www.ncycglass.com/blog 有兴趣的看看本人的blog,一同探讨.


    文章来源:http://computer.mblogger.cn/wucountry/posts/39641.aspx
    ================================
      /\_/\                        
     (=^o^=)  Wu.Country@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    linux权限补充:rwt rwT rws rwS 特殊权限
    关于Linux操作系统下文件特殊权限的解释
    Java学习笔记——Java程序运行超时后退出或进行其他操作的实现
    Java实现 蓝桥杯 算法提高 判断名次
    Java实现 蓝桥杯 算法提高 判断名次
    Java实现 蓝桥杯 算法提高 日期计算
    Java实现 蓝桥杯 算法提高 日期计算
    Java实现 蓝桥杯 算法提高 概率计算
    Java实现 蓝桥杯 算法提高 概率计算
    Java实现 蓝桥杯 算法提高 复数四则运算
  • 原文地址:https://www.cnblogs.com/WuCountry/p/305737.html
Copyright © 2011-2022 走看看