首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

送分100分:关于C语言中的函数中的参数与VB函数中的函数转换有关问题

2012-01-23 
送分100分:关于C语言中的函数中的参数与VB函数中的函数转换问题现有一个C语言的函数如下:__int16 asc_hex(

送分100分:关于C语言中的函数中的参数与VB函数中的函数转换问题
现有一个C语言的函数如下:

  __int16 asc_hex(unsiged char *asc, unsigned char *hex ,unsigned long length)


请问如何确定这三个参数转换成VB6中的函数后,三个参数是BYREF,还是BYVAL,这类转换有什么规律可循吗。

还有一个问题是unsiged char,unsigned long各对应VB6中什么数据类型,有规律可循吗,请列个表。

谢谢。

[解决办法]
楼主这个问题考验VB,VC联合编程的基本功哦,我试着解答一下,就算抛砖引玉吧:
注意,C中的无符号长整型在VB中没完全对应的,只有用有符号long,如你的这个长度实际可能超过2G,就要小心了:)

VB code
Private Declare Function asc_hex Lib "DllName" (ByVal asc As String, ByVal hex As String, ByVal length As Long) As Integer
[解决办法]
关键是你前两个指针是表示字符串、数组、还是单个的字符?
C 函数光看定义是存在多义性的。
[解决办法]
VB code
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& 或 vbNullStringSHORT                                |ByVal variable As Integer       |结果为 Integer 类型的表达式              VOID                                 |Sub procedure                   |不可用                                   WORD                                 |ByVal variable As Integer       |结果为 Integer 类型的表达式WPARAM                               |ByVal variable As Long          |结果为 Long 类型的表达式
[解决办法]
无符号字符型指针对应一个地址,可以在VB中定义为Long型数据。
[解决办法]
C/C++ code
unsiged char *a 

热点排行