本人是学习特长是C、C++.最近公司有一个项目是用VB写的,现在要扩充一个功能。就临时用起了VB来开发。以前也用过VB,懂一点基础的语法。能够看懂别人的程序,但用VB来表达我的想法还是做不到。就边看别人的代码,边学习,感觉还不错。

解决的第一个问题是:如何用VB调用API?

要在VB中调用API,需要声明外部过程。在声明了之后,调用他的方法就和调用VB自己的过程相同。用声明一个DLL过程。需要在代码窗口的声明部分加上Declare语句。如果该过程有返回值,应该将其声明为Function.如果没有返回值,可以将其声明为Sub.

32位的VB的过程名称是区分大小写的。

Declare语句的Lib告诉VB在那一个dll中能够找到函数的声明。如果是Windows核心库,则可以不包含文件扩展名。

如 果调用Windows API过程要使用字符串,那么在声明语句中必须增加一个Alias语句。以便指定正确的字符集。这是因为包含字符串的Windows API函数实际有两种格式,一种是ANSI,另一种是Unicode.因此,在Windows头文件中,包含字符串的函数都有两个。

Alias子句后面的字符串必须是过程的真正名称。必须是大小写区分的。

解决的第二问题是:如何用VB自己写一个类?

用惯了C++,就是习惯写类。所以现在需要解决如何用VB来写C++类。VB用新建一个类模块来产生一个类。你需要修改类的名称属性,给他一个适当的名称,这就是你的类了。

在类中可以使用Private ,Public定义成员变量。他们含义和C++一样。Private私有,Public共有。

 在 类中可以使用Private ,Public来定义成员函数。默认成员函数的属性为Public。在VB中可以有两种方式来实现C++函数的功能。一种是关键词Function.这个 和C++的函数基本类似。一个是Sub过程。这个似乎不能有返回值,并且调用的时候不能有括号。

在VB中使用类和VC中一样。

Dim objSystray As CSystray
Set objSystray = New CSystray

这样就有一个类的实例了。

在VB中可以用 Public Property Let 和Public Property Get 来直接对类的成员变量进行赋值操作。

第3个问题是:VB的工程结构是怎样的?

VB的工程结构为3部分。标准模块。窗体模块,类模块。

标准模块也称做全局模块。由全局变量声明、模块层声明及通过过程等几个部分组成。其中全局比那里声明放在标准模块的首部,模块层声明包括在标准模块中使用的变量和常量。在标准模块中,全局变量用Public声明,模块层变量用dim或者private声明。

第4个问题是:VB程序的入口点?

C/C++中都有Main函数。VB中没有Main函数,但是有一个Sub Main过程。通过设置,可以让VB从Sub Main开始执行。

第5个问题是:VB如果完全退出程序?

C/C++中有Exit函数。VB中有End。在响应退出事件的时候,如果不加上End.程序有时候会出现窗口消失了,但程序在任务管理器下依然存在。

 

 第5个问题是:VB的事件?

类支持的事件分为“默认事件”和自定义事件。系统创建的默认事件有两个Initialize(开始)和Terminate(结束)。就是在类初始化的时候执行的代码,和结束时执行的代码。有点类似于构造函数和析构函数。

自定义的事件的含义事,在类的设计的是时候,设计者决定合适触发什么事件,而类的使用者则决定对这个事件该如何写响应代码。这是一个很不错的功能。

 在类模块中添加自定义事件需要完成一下两项工作:

  1. 在类模块的声明段使用Event语句声明类中的公共事件
  2. 在类模块代码的适当位置使用RaiseEvent语句,激发该事件

 要使用事件,需要在模块的通用部分声明对象,否则不能够通过编译。具体原因不详,实际上就是这样。

一段代码:

//类声明部分
Public Event TestEvent()
 Public Function Add(nNum1 As Integer, nNum2 As Integer) As Integer
        If nNum1 > 10 Then
            RaiseEvent TestEvent
        End If
        Add = nNum1 + nNum2
        
End Function


//类调用
Dim WithEvents objSystray As CSystray '如果不声明为模块集对象就不能用
Private Sub objSystray_TestEvent()
    MsgBox "Event Ok"
End Sub

 

 



收藏
0个人 收藏

关注Joomla中国微信公众号,随时获得最新的Joomla新闻资讯!