VB中传递字符串指针

Eddy 发布于2009-12-22 21:5:49 分类: 程序设计 已浏览loading 网友评论0条 我要评论

在VB中,API调用有些参数是字符串指针类型的,那如何传递这一类型参数呢?

只需定义一个字符串变量,然后 ByVal 变量名 传递就可以了(当然如果原API声明中已经有ByVal,那直接传变量名就OK)。

举个例子,给指定窗口发送一条消息:

Dim a As String
a = "你好啊"
SendMessage hwnd, WM_SETTEXT, 0, ByVal a '这里的ByVal就不能少

引用一些解释:

VB默认的传递方式就是传指针(ByRef,也就是把变量的地址传递给所调用的函数)。如果要传值(也就是把变量的值传递给所调用的函数)反要在参数声明前加ByVal。所以如果你传递的参数是普通的数据类型,在参数前什么都不要加就行了。如C语言声明为:
    void __stdcall MyProc(short * nPara);
    则VB声明为:
    Declare Function MyProc Lib "MyDll.dll" (nPara As Integer)
    调用时同普通函数。
    如果C语言中的指针是字符串指针,那么在VB声明时需要加上ByVal,这是个例外。如C语言声明为:
    void __stdcall MyProc(char * sPara);
    则VB声明为:
    Declare Function MyProc Lib "MyDll.dll" (ByVal sPara As String)
    调用时同普通函数。
    如果C语言的指针是数组指针,则在VB中调用时应将数组的首元素传递给DLL。如C语言声明为:
    void __stdcall MyProc(int [] arrPara);
    则VB声明为:
    Declare Function MyProc Lib "MyDll.dll" (nPara As String)
    调用时为MyProc A(0)。
    注意:不能直接传递数组名,因为如果传递数组名,VB实际会传一个复杂的结构类型给DLL,这对编写C语言的DLL来说,处理这样的结构比较麻烦,所以通常都不支持这种方式。

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/272.html     欢迎订阅Eddy Blog

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言