怎样把下面的vc翻译成vb
////VC 是这样的
NET_DVR_API LONG __stdcall NET_DVR_FindNextPicture(LONG lFindHandle,LPNET_DVR_FIND_PICTURE lpFindData);
NET_DVR_API BOOL __stdcall NET_DVR_GetPicture(LONG lUserID,char *sDVRFileName,char *sSavedFileName);
typedef struct
{
char sFileName[100];//图片名
NET_DVR_TIME struTime;//图片的时间
DWORD dwFileSize;//图片的大小
char sCardNum[32];//卡号
}NET_DVR_FIND_PICTURE,*LPNET_DVR_FIND_PICTURE;
VB我是这样写及调用的
Declare Function NET_DVR_FindNextPicture Lib "HCNetSDK.dll " (ByVal lFindHandle As Long, ByVal lpFindData As Long) As Long
Declare Function NET_DVR_GetPicture Lib "HCNetSDK.dll " (ByVal lUserID As Long, sDVRFileName As Long, sSavedFileName As Long) As Long
Type NET_DVR_FIND_PICTURE
sFileName(0 To 100) As Byte '//图片名
struTime As NET_DVR_TIME '/图片的时间
dwFileSize As Long '//图片的大小
sCardNum As String ' //卡号
End Type
bRet = NET_DVR_FindNextPicture(m_lFileHandle, VarPtr(strFileInfo))
nFileName = iPath & CStr(iFile) & "_ " & sID & ".jpg "
sFileName = StrConv(strFileInfo.sFileName, vbFromUnicode)
bRet = NET_DVR_GetPicture(m_lServerID, StrPtr(sFileName), StrPtr(nFileName))
为什么 sFileName得到的是乱码,是数据结构定义错了吗
[解决办法]
Type NET_DVR_FIND_PICTURE
sFileName(0 To 100) As Byte '//图片名 大了//
struTime As NET_DVR_TIME '/图片的时间
dwFileSize As Long '//图片的大小
sCardNum As String *32 ' //卡号 固定长度
End Type
[解决办法]
vb字符串为 BSTR 格式,用 strconv( , vbFromUnicode) 转换为 ANSI 格式,因为 VC 中的 char* 是 Ansi 格式的,对返回值要用 strconv( , vbUnicode) 转成 BSTR 格式,就可以正常显示了。