////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 LongDeclare Function NET_DVR_GetPicture Lib "HCNetSDK.dll" (ByVal lUserID As Long, sDVRFileName As Long, sSavedFileName As Long) As LongType 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得到的是乱码,是数据结构定义错了吗

解决方案 »

  1.   

    少打了一句
    dim strFileInfo as NET_DVR_FIND_PICTURE
      

  2.   

    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
      

  3.   

    sFileName = StrConv(strFileInfo.sFileName, vbFromUnicode)
    这个得到的sFileName是乱码,这是什么原因呀,我主要问的就是这个问题
      

  4.   

    vb字符串为 BSTR 格式,用 strconv( , vbFromUnicode) 转换为 ANSI 格式,因为 VC 中的 char* 是 Ansi 格式的,对返回值要用 strconv( , vbUnicode) 转成 BSTR 格式,就可以正常显示了。