VB6中TCHAR的转换问题?
MSDN中C语言DEV_BROADCAST_PORT消息原型
typedef struct _DEV_BROADCAST_PORT
{
DWORD dbcp_size;
DWORD dbcp_devicetype;
DWORD dbcp_reserved;
TCHAR dbcp_name[1];
}
DEV_BROADCAST_PORT *PDEV_BROADCAST_PORT;
现在在VB6中TCHAR dbcp_name[1];怎么转换呢?还问一下CopyMemory复制这个结构体要怎么写才正确?
我是这样写的
Public Type DEV_BROADCAST_PORT
lSize As Long
lDevicetype As Long
lReserved As Long
lName(1) As Byte
End Type
Public info_port As DEV_BROADCAST_PORT
.....
.....
CopyMemory info_port, ByVal lParam, Len(info_port)
....
但是没通过
[解决办法]
TCHAR比较特殊,它是不定类别,如果编译设置为ANSI,则TCHAR相当于VB的BYTE数组,可以直接使用VB的输入输出函数,如果编译设置为UNICODE,则TCHAR相当于VB的INTEGER数组,则需要使用UNICODE版本(即最好一个字符为“W”)的API函数。
[解决办法]
tchar是宽字符,vb不像vc那样能自动识别unicode的字符类型
传给vb时要进行宽字符转换,
参考api:MultiByteToWideChar
结构体传出,用long,byte只是到255,而中文字符时不正确的
[解决办法]
VB6中TCHAR的转换有关问题
VB6中TCHAR的转换问题?MSDN中C语言DEV_BROADCAST_PORT消息原型typedef struct _DEV_BROADCAST_PORT{DWORD
