下面是我的写avi文件有程序。。到了movi块的时候不知道该如何写了。。还有视频数据写到哪个地方呀?多谢知道的朋友了! HMMIO hFile;
MMCKINFO mmckinfo;
MMCKINFO cihdrl,ciavih,cistrl,cistrh,cistrf; MMRESULT rc;
MainAVIHeader mainheader;
AVIStreamHeader mainstreamh;
BITMAPINFO bitmapif;
LONG n; if ((hFile = mmioOpen("C:\\SAMPLE1.avi", NULL, MMIO_CREATE | MMIO_WRITE  )) == NULL) 
    {
return ;
    }

::ZeroMemory( &mmckinfo, sizeof(MMCKINFO) );
mmioSeek(hFile, 0L, SEEK_SET);
mmckinfo.fccType = mmioFOURCC('A', 'V', 'I', ' '); 
//mmckinfo.
mmioCreateChunk(hFile,&mmckinfo,MMIO_CREATERIFF); if( rc != MMSYSERR_NOERROR )
return ;    ::ZeroMemory( &cihdrl, sizeof(MMCKINFO));
    cihdrl.ckid = mmioFOURCC( 'h', 'd', 'r', 'l' );
    //ciSub.cksize = sizeof(MainAVIHeader);
    rc = ::mmioCreateChunk( hFile, &cihdrl, MMIO_CREATELIST );    ::ZeroMemory( &ciavih, sizeof(MMCKINFO));
    ciavih.ckid = mmioFOURCC( 'a', 'v', 'i', 'h' );
ciavih.cksize = sizeof(MainAVIHeader);
rc = ::mmioCreateChunk( hFile, &ciavih, 0 );

if( rc != MMSYSERR_NOERROR )
return ;

    mainheader.dwMicroSecPerFrame    = 2938496;
    mainheader.dwMaxBytesPerSec      = 1;
    mainheader.dwPaddingGranularity  = 0;
    mainheader.dwFlags               = AVIF_HASINDEX | AVIF_TRUSTCKTYPE;
    mainheader.dwTotalFrames         = 150;//2192;
    mainheader.dwInitialFrames       = 0;
    mainheader.dwStreams             = 1;
    mainheader.dwSuggestedBufferSize = 120000;
    mainheader.dwWidth               = m_taginfoheader->biWidth;;
    mainheader.dwHeight              = m_taginfoheader->biHeight;
    memset(mainheader.dwReserved,0,sizeof(mainheader.dwReserved));            //= {};

n = mmioWrite( hFile, (HPSTR)&mainheader, sizeof(MainAVIHeader) );
if( n != sizeof(MainAVIHeader) )
    {
mmioClose( hFile, 0 );
        return ;
    }

rc = ::mmioAscend( hFile, &ciavih, 0 );
    ::ZeroMemory( &cistrl, sizeof(MMCKINFO));
cistrl.ckid = mmioFOURCC( 's', 't', 'r', 'l' );
    rc = mmioCreateChunk( hFile, &cistrl, MMIO_CREATELIST );

//cistrh
if (rc != MMSYSERR_NOERROR )
return ; ::ZeroMemory( &cistrh, sizeof(MMCKINFO));
cistrh.ckid = mmioFOURCC( 's', 't', 'r', 'h' );
cistrh.cksize = sizeof(AVIStreamHeader);
rc = mmioCreateChunk(hFile, &cistrh,0);

    mainstreamh.fccType               = FCC('vids');
mainstreamh.fccHandler            = FCC('DIVX');
    mainstreamh.dwFlags               = 0;
    mainstreamh.wPriority             = 0;
    mainstreamh.wLanguage             = 0;
    mainstreamh.dwInitialFrames       = 0;
    mainstreamh.dwScale               = 33333 ;
    mainstreamh.dwRate                = 1000000;
    mainstreamh.dwStart               = 0;
    mainstreamh.dwLength              = 150;
    mainstreamh.dwSuggestedBufferSize = 120000;
    mainstreamh.dwQuality             = 0;
    mainstreamh.dwSampleSize          = 0;
    mainstreamh.rcFrame.left          = 0;
mainstreamh.rcFrame.top           = 0;
mainstreamh.rcFrame.right    = m_taginfoheader->biWidth;
mainstreamh.rcFrame.bottom    = m_taginfoheader->biHeight; n = mmioWrite( hFile, (HPSTR)&mainstreamh, sizeof(AVIStreamHeader) );
if( n != sizeof(AVIStreamHeader) )
    {
mmioClose( hFile, 0 );
        return ;
    }

rc = ::mmioAscend( hFile, &cistrh, 0 ); ::ZeroMemory( &cistrf, sizeof(MMCKINFO));
cistrf.ckid = mmioFOURCC( 's', 't', 'r', 'f' );
cistrf.cksize = sizeof(BITMAPINFO);
rc = mmioCreateChunk(hFile, &cistrf,0);
ZeroMemory(&bitmapif,sizeof(BITMAPINFO));
bitmapif.bmiColors = GetBitmapPalette(m_pVih);
CopyMemory(&(bitmapif.bmiHeader, m_pInput->CurrentMediaType().Format(), 
m_pInput->CurrentMediaType().FormatLength()); n = mmioWrite( hFile, (HPSTR)&bitmapif, sizeof(BITMAPINFO));
if( n != sizeof(BITMAPINFO) )
    {
mmioClose( hFile, 0 );
        return ;
    }
rc = ::mmioAscend( hFile, &cistrf, 0 );
rc = ::mmioAscend( hFile, &cistrl, 0 );
rc = ::mmioAscend( hFile, &cihdrl, 0 );下面该写movi块的了。。谢谢了