函数原型是这样的:
int WINAPI GetDeliverSMExExEx(ULONG* sm_ID, unsigned char* DestTON, unsigned char* DestNPI, char* DestAddr, unsigned char* OrgTON, unsigned char* OrgNPI,  char* OrgAddr,  unsigned char* PRI, unsigned char* RP, unsigned char* UDHI, unsigned char* PID, unsigned char* DCS, char* TimeStamp, unsigned long * UDLen, char* UserData, unsigned char* StatusReport,unsigned char* sMsgID, char* sSubmitdate, char* sDonedate, char* sStatus,int iDeliverAckResult);我不明白为什么除了函数本身有一个int类型的返回值外,它里面的那些参数也都是返回值?
这个函数的功能是从短信网关取下发的短信。它里面的参数都是短信的相关信息。
小弟对动态链接库技术不熟,请各位指点。谢谢

解决方案 »

  1.   

    关于函数的参数返回值.将参数定义为按地址传递,就会返回参数的值.
    举个例子Private Function abc(ByRef strTemp As String) As String'用ByRef 就是按地址传递
    strTemp = "acc"
    End Function调用:
    Private Sub Command9_Click()
    dim aa as string,bb as string
    aa=abc(bb)
    msgbox bb'这时候,bb就已经被返回了"acc"了
    End Sub
    如果用byval来定义参数就不会返回了.
    如:
    Private Function abc(byval strTemp As String) As String'用byval就不会返回参数值了
    strTemp = "acc"
    End Function
      

  2.   

    vb 中返回的都是 long 型的地址,对于返回字符串的参数需要放在一个分配好的缓冲区中。
      

  3.   

    建议楼主先把这个可怕的大API函数放到一边,找一本关于VB或者介绍API的书看一些简单的例子,类型不懂可以查MSDN。