CreateFile(lpFileName, GENERIC_WRITE,0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);想用个变量传到lpFileName中创建bmp。
我用固定值时只要将 lpFileName="C:\\screen.bmp"就可以了。
现在我打算要创建几个bmp,所以是个变量,比如i=0,就创建C:\\1.bmp;i++,根据i的变化创建不同文件名的bmp
应该如何写呢?

解决方案 »

  1.   

    CString strFileName;
    for(int i=0;i<10;i++)
    {
    strFileName.Format("%d.bmp",i);
    CreateFile(strFileName, GENERIC_WRITE,0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); 
    }
      

  2.   

    lpFileName是个LPSTR类型的,
    编译后出现错误:
    不能将参数 2 从“CString”转换为“LPSTR”
    另外,能不能改路径啊?
      

  3.   

    强制类型转换试试,不行的话就(LPSTR)cstring.Getbuffer(0),我记不清该具体该怎么转换了,你试试。
    CString strPath = _T("C://")
    CString strFullPath = _T("");
    strFileName.Format("%d.bmp",i); 
    strFullPath = strPath + strFileName;
      

  4.   

    CreateFile((LPSTR)(LPTSTR)strFileName, GENERIC_WRITE,0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); 
      

  5.   

    //CString::GetBuffer()就可以
    CString strFileName; 
    for(int i=0;i < 10;i++) 

      strFileName.Format("%d.bmp",i); 
      CreateFile(strFileName.GetBuffer(0), GENERIC_WRITE,0, NULL, 
        CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
      strFileName.ReleaseBuffer(); 
    }//或者用char*
    char strFileName[MAX_PATH];
    for(int i=0;i < 10;i++) 

      sprintf(strFileName, "C:\\%d.bmp", i);
      CreateFile(strFileName.GetBuffer(0), GENERIC_WRITE,0, NULL, 
        CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
    }