VB中有和C++中的fwrite一样的函数吗?有的话能帮我看看这行怎么转为VB的代码?
if (sizeof(BITMAPFILEHEADER) != fwrite(&bmpflh,1,sizeof(BITMAPFILEHEADER),pFile))

解决方案 »

  1.   

    【VB声明】
      Private Declare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long【说明】
      将数据写入一个文件。该函数比lwrite函数要灵活的多。也可将这个函数应用于对通信设备、管道、套接字以及邮槽的处理 【返回值】
      Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError 【备注】
      并不是每种操作系统都支持在任何类型的设备上进行异步操作。windows
      95不支持对磁盘文件的重叠读取操作【参数表】
      hFile ----------  Long,一个文件的句柄  lpBuffer -------  Any,要写入的一个数据缓冲区  nNumberOfBytesToWrite -  Long,要写入数据的字节数量。如写入零字节,表示什么都不写入,但会更新文件的“上一次修改时间”。针对位于远程系统的命名管道,限制在65535个字节以内  lpNumberOfBytesWritten -  Long,实际写入文件的字节数量  lpOverlapped ---  OVERLAPPED,倘若在指定FILE_FLAG_OVERLAPPED的前提下打开文件,这个参数就必须引用一个特殊的结构。那个结构定义了一次异步写操作。否则,该参数应置为空(将声明变为ByVal
      As Long,并传递零值)
      

  2.   

    谢谢了。
    那能帮我解释解释这个API
    Public Declare Function OpenFile Lib "kernel32" Alias "OpenFile" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
    各参数的意思和fseek对应的API是什么吗?
      

  3.   

    你可以不用api,使用vb自带的filesystemobject对象,很简单的
    '在这里先获取你要写入的数据的大小
    picsize = ...........
        '开辟本地缓冲
        ReDim Picbuff(picsize) As Byte
            FileNum = FreeFile
    '然后在这里把你的bmpheaderinfo写入到picbuff数组里,要看你的具体代码
    Picbuff = ...............
    '把这个数组写到文件中
    Open "Picture.jpg" For Random As FileNum Len = 1
            For cnt1 = 1 To picsize
                Put FileNum, cnt1, Picbuff(cnt1 - 1)
                
            Next