手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

在VB中使用API函数(Any)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

1 2 3 下一页

Any

  有些消息的参数声明为Any.这表示该参数是一种可变的类型(你可以以整型,字符串,用户自定义或其他的类型来传递).

这有一个这样的例子:

Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, lParam as Any) as Long

lParam 声明为Any并按引用(ByRef)传递.

  这里是在这个函数中如果lParam是不同类型的值时应遵循的规则:

如果该值是 传递形式

numeric ByVal(as Long,or as Any)

Null ByVal(as Long,or as Any)

String ByRef(as String,or as Any)

Type ByRef(as Any)

array of Type ByRef(as Any)

  如果你的函数声明同上面的一个而且你想传递一个Long型数,你应该这样写:

Call SendMessage(Me.Hwnd,WM_XXXX,0&,ByVal LongValue)

  注意尽管头三个参数也是数值,但它们前边并没有ByVal.这是因为在函数声明中它们已经被声明为按值传递(ByVal).第四个参数,由于是按引用传递(ByRef)(VB并不知道你要传递参数的类型),因此你必须加上ByVal 你可以使用别名技术来传递不同类型的参数:

Public Declare Function SendMessageLng Lib "User32" Alias "SendMessageA"(ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, ByVal lParam as Long) as Long

或:

Public Declare Function SendMessageStr Lib "User32" Alias "SendMessageA"(ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, lParam as String) as Long

  注意API参数类型本身是不会改变的.例子中的第四个参数总是一个4字节的长型数.当你按值(ByVal)传递一个Long或 Null时,该4字节长的数值就直接传递给函数.如果你传递一个String或其他的什么,你是按引用(ByRef)传递,VB传递的实际上是变量的地址,也是4个字节.

上一篇: 用Visual Basic设计browser及ftp程序(二)
下一篇: 用Visual Basic设计browser及ftp程序(三)

1 2 3 下一页

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!