当前位置:编程学习 > VB >>

请教高手,以下几行C代码,转换到VB代码,非常感谢!

--------------------编程问答-------------------- 图片有点宽,请在新窗口打开看。 --------------------编程问答-------------------- 断章取义,这个问题玩不转 --------------------编程问答-------------------- 声明 DLL 过程


尽管 Visual Basic 在 Win32api.txt 中提供了大量的预定义声明,但还是需要知道如何亲自编写声明。例如,有时希望访问用其它语言编写的 DLL 中的过程,或者改写 Visual Basic 的预定义声明,以满足特殊需要。

要声明一个 DLL 过程,需要在代码窗口的“声明”部分增加一个 Declare 语句。如果该过程返回一个值,应将其声明为 Function:

Declare Function publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]]...])] As Type

如果过程没有返回值,可将其声明为 Sub:

Declare Sub publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]]...])]

缺省情况下,在标准模块中声明的 DLL 过程是公有的,可以在应用程序的任何地方调用它。在其它类型的模块中定义的 DLL 过程是模块私有的,必须在它们前面声明 Private 关键字,以示区分。

在 32 位的 Visual Basic 中过程名是区分大小写的。在以前的 16 位版本中,过程名是不区分大小写的。

详细信息   请参阅《联机手册》中《语言参考》中的“声明语句”。

指定库
Declare 语句中的 Lib 子句用来告诉 Visual Basic 如何找到包含过程的 .dll 文件。如果引用的过程属于 Windows 核心库(User32、Kernel32 或 GDI32),则可以不包含文件扩展名:

Declare Function GetTickCount Lib "kernel32" Alias _
"GetTickCount" () As Long

对于其它 DLL,Lib 子句指定文件的路径:

Declare Function lzCopy Lib "c:\windows\lzexpand.dll" _
(ByVal S As Integer,    ByVal D As Integer) As Long

如果未指定 libname 的路径,Visual Basic 将按照下列顺序查找该文件: 

.exe 文件所在的目录


当前目录


Windows 位系统目录(通常为 \Windows\System)


Windows 目录(不一定是 \Windows)


Path 环境变量中的目录 

将 C 语言声明转换为 Visual Basic 声明

在文档中,通常使用 C 语言的语法描述 DLL 中的过程。要在 Visual Basic 中调用这些过程,需要将它们转换成合法的 Declare 语句,并使用正确的参数调用它们。

在进行这种转换时,必须将 C 数据类型转换为 Visual Basic 的数据类型,并且说明每个参数是以使用值的 (ByVal) 方式,还是使用引用的 (ByRef)(缺省)方式。下表针对常用的 C 语言数据类型列出了与之等价的 Visual Basic 类型(用于 32 位版本的 Windows)。

C 语言数据类型 在 Visual Basic 中声明为 调用时使用的表达式 
ATOM ByVal variable As Integer 结果为 Integer 类型的表达式 
BOOL ByVal variable As Long 结果为 Long 类型的表达式 
BYTE ByVal variable As Byte 结果为 Byte 类型的表达式 
CHAR ByVal variable As Byte 结果为 Byte 类型的表达式 
COLORREF ByVal variable As Long 结果为 Long 类型的表达式 
DWORD ByVal variable As Long 结果为 Long 类型的表达式 
HWND, HDC, HMENU 等。(Windows 句柄) ByVal variable As Long 结果为 Long 类型的表达式 
INT, UINT ByVal variable As Long 结果为 Long 类型的表达式 
LONG ByVal variable As Long 结果为 Long 类型的表达式 
LPARAM ByVal variable As Long 结果为 Long 类型的表达式 
LPDWORD variable As Long 结果为 Long 类型的表达式 
LPINT, LPUINT variable As Long 结果为 Long 类型的表达式 
LPRECT variable As type 自定义类型的任意变量 
LPSTR, LPCSTR ByVal variable As String 结果为 String 类型的表达式 
LPVOID variable As Any 任何变量(在传递字符串的时候使用 ByVal) 
LPWORD variable As Integer 结果为 Integer 类型的表达式 
LRESULT ByVal variable As Long 结果为 Long 类型的表达式 
NULL As Any 或
ByVal variable As Long ByVal Nothing 或 ByVal 0& 或 vbNullString 
SHORT ByVal variable As Integer 结果为 Integer 类型的表达式 
VOID Sub procedure 不可用 
WORD ByVal variable As Integer 结果为 Integer 类型的表达式 
WPARAM ByVal variable As Long 结果为 Long 类型的表达式 

补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,