VC 中,关于字符串,我看是这样的表示方法char *sDVRFileName 和 BYTE sSerialNumber[SERIALNO_LEN]这个我搞不太清,理论上面一个是字符串,一个是数组,可是vc好象是直接传递的vb就不行了呀举个例子
VC是这样的NET_DVR_API BOOL __stdcall NET_DVR_GetPicture(LONG lUserID,char *sDVRFileName,char *sSavedFileName);BYTE sSerialNumber[SERIALNO_LEN];  //序列号char filenamedownload[256];
char nFileName[256];
NET_DVR_GetPicture(GetPic->m_lServerID, GetPic->filenamedownload, nFileName)  //调用
vb中 nFileName是一个字符串,怎样调用 NET_DVR_GetPicture呢

解决方案 »

  1.   

    另外,上面的问题中typedef struct
    {
    char sFileName[100];//图片名
    NET_DVR_TIME struTime;//图片的时间
    DWORD dwFileSize;//图片的大小
    char sCardNum[32]; //卡号
    }NET_DVR_FIND_PICTURE,*LPNET_DVR_FIND_PICTURE;char tempfile[100];NET_DVR_FIND_PICTURE strFileInfo;strcpy(tempfile,strFileInfo.sFileName);这样就得到 tmpfile这个文件名了,vb中怎么操作呢
      

  2.   

    VB 是完全 COM 兼容的,所以它的 String 就是 BStr,具体可以看看 MSDN。
    c 中的 char* 是一个指针,而且字符串值 ANSI 格式。首先,在 VB 中将参数声明未指针值(Long)
    declare ... NET_DVR_GetPicture(byval lUserID as long,byval sDVRFileName as long, byval sSavedFileName as long)其次,将VB字符串转换为 ANSI 格式并传递指针
    sFileName = strconv(sFileName, vbFromUnicode)
    NET_DVR_GetPicture lUserID, strptr(sFileName), strptr(sSaveFileName)
      

  3.   

    ////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得到的是乱码,是数据结构定义错了吗
      

  4.   

    上面少打了一句
    dim strFileInfo as NET_DVR_FIND_PICTURE
      

  5.   

    sFileName = StrConv(strFileInfo.sFileName, vbUnicode)
      

  6.   

    sFileName(0 To 100) As Byte  '//图片名sFileName As String*101
      

  7.   

    调用的时候要先初始化这个String
    ***.sFileName =space(101)