VB无所不能之五:建立“标准”DLL动态链接库文件(1)
作者:钟声
博客地址:http://blog.csdn.net/useway
动态链接库经常被认为是VC或者Dephi的专利,DLL文件可以将你编写的函数动态的发布,并可以被其他程序很方便的调用。
有朋友会问了,在VB里面不是有一个叫做“ActiveX DLL”的项目类型吗,生成的文件最终也是“DLL”文件啊?
没错,最终文件确实是DLL文件,但其实严格意义上VB建立的DLL并不是像VC一样的动态链接库,VB建立的是ActiveX DLL,不能像kernel32.dll”那样通过“Declare Function .....”来调用的。
本文中将详细讲解用VB生成一个DLL动态链接库文件的方法,请注意,本文将详细讲述生成一个像VC的动态链接库文件,并且调用方法也是用“Declare Function .....”来调用。
好,那么我们来建立一个DLL吧。
......
上集中只是显示星期几,不够全面,完善后如下:
1、创建lbl1、lbl2、lbl3、txt1、cmd1、Timer1
2、lbl:“输入年月日(如2000-8-16):”,设置lbl、txt1、cmd1的字体大小和颜色。Timer1的Enable属性设为False,Interval属性设为:1000。
3、双击cmd1,进入代码编辑窗口,敲入:
Private Sub Timer1_Timer()
Dim c As Date
c = Time
lbl3.Caption = CStr(c)
End Sub
——————————————————
Private Sub cmd_Click()
If txt1.Text = "" Then
MsgBox "请输入年月日!", , "错误!"
lbl2.Caption = ""
Exit Sub
End If
Timer1.Enabled = True
Dim a, b
b = Val(txt1.Text)
&nbs ......
原来的错误是:Timer1的Enabled属性设为True。
代码错误是:
Private Sub Timer1_Timer()
Dim c As Date
c = Time
lbl3.Caption = CStr(c)
End Sub
————————————————————
Private Sub cmd1_Click()
Dim a, b
b = Val(txt1.Text)
a = Weekday(b)
Select Case a
Case 1
lbl2.Caption = "星期日"
Case 2
lbl2.Caption = "星期一"
Case 3
lbl2.Caption = "星期二"
  ......
第一次正式去上米老师的课,这次是寒假来后的第一节课,内容主要是交流一下寒假的学习情况。
首先是言行问题:去机房上课时,带胸牌、笔记本、笔、《Visual Basic 程序设计》、鞋套、眼镜,手机能不带就不带;别人发言时,显示器关掉,面向对方以示尊敬。
7期的同学们在寒假中也遇到很多困惑。
我总结所有问题如下:
学习步骤:
1、先看VB百例,配合资料书《VB程序设计》。(时间投入30%)把控件的一些基本属性和方法、事件搞清楚。百例中的例子尽量自己实现,如果想不出啦,赶紧看实例源文件,敲代码,实现后把实例背过。
2、看吉大视频,边看边做相关实例。(时间投入70%)吉大视频比较系统全面,是米老师感觉最全面的视频教程。
3、注意MSDN和电子词典的使用。期末米老师会给英文资料,应在遇到陌生单词的下一秒理解“消灭掉”,不拖延时间
米老师来后指出同学们的共性问题是没入门有两点:1、V ......
1、关于吉大视频:1-3集讲VB程序设计的概述4-30集讲VB基础知识,如控件的使用31-64集讲ActiveX控件、数据库等的高级编程部分。
看的过程中注意快捷键的使用和截图工具的运用,看视频时将重点作出标注。
2、由CSTR、Cstr()、string、Instr()和str()(此为深度扩展)所想到的关于总结的方法。
CSTR在VB程序设计中是不存在的,即使敲入CSTR后,VB也会自动默认为Cstr。
string 函数 string(2,sport)的返回值是“ss”
Instr():Instr(3,“studystudy”,“tu”)
关于Cstr和str:两种最大的区别在于:
Cstr在将正数转换为数字字符串时,不在其前加前导空格来暗示其正号;
而Str在将正数转换为数字字符串时,返回的字符串包含一前导空格暗示有一正号。
举例如下:
Dim i As Single
Dim cstr1 As String
Dim str1 As String
i = 10.3
cstr1 = CStr(i)
str1 = Str(i)
......
VC++
与VB
数据类型对应关系
在做VC与vb程序间互相调用,需要注意两种语言不同编译器对数据类型的定义区别,此时两者数据类型的对应关系就显得十分的重要,对应关系以及声明方式如下所示。
VC++
VB
short
Integer
int
Long
long
Long
UNIT
Long
ULONG
Long
WORD
DWORDLong
WPARAM
LPARAMLong
WMSG
UMSGLong
HRESULT
Long
BOOL
Boolean
COLORREF
Long
HWND,HDC,HBRUSH,HKEY,
等 等
Long
LPSTR
LPCSTRString
LPWSTR,OLECHARBSTR
String
LPTSTR
String
VARIANT_BOOL
Boolean
unsignedchar
Byte
BYTE
Byte
VARIANTVariant
(
任何 以*
或**
结尾的数据类型)
Long
c
中的数据类型
VB
中的声明
结果
ATOM
ByVal variable As Integer
结果为Integer
类型的表达式
BOOL
ByVal variable As Boolean
结果为 Long
类型的表达式
BYTE
ByVal variable As Byte
结果为 Byte
类型的表达式
CHAR
ByVal variable As Byte
结 ......
VC++
与VB
数据类型对应关系
在做VC与vb程序间互相调用,需要注意两种语言不同编译器对数据类型的定义区别,此时两者数据类型的对应关系就显得十分的重要,对应关系以及声明方式如下所示。
VC++
VB
short
Integer
int
Long
long
Long
UNIT
Long
ULONG
Long
WORD
DWORDLong
WPARAM
LPARAMLong
WMSG
UMSGLong
HRESULT
Long
BOOL
Boolean
COLORREF
Long
HWND,HDC,HBRUSH,HKEY,
等 等
Long
LPSTR
LPCSTRString
LPWSTR,OLECHARBSTR
String
LPTSTR
String
VARIANT_BOOL
Boolean
unsignedchar
Byte
BYTE
Byte
VARIANTVariant
(
任何 以*
或**
结尾的数据类型)
Long
c
中的数据类型
VB
中的声明
结果
ATOM
ByVal variable As Integer
结果为Integer
类型的表达式
BOOL
ByVal variable As Boolean
结果为 Long
类型的表达式
BYTE
ByVal variable As Byte
结果为 Byte
类型的表达式
CHAR
ByVal variable As Byte
结 ......