想保存bmp文件
不调用CFileDialog dlg(false,"bmp",NULL, OFN_OVERWRITEPROMPT,
"位图文件(*.bmp)|*.bmp||",
NULL);文件名用个Cstring变量表示
不弹出上面的那个对话框请问有何办法?重谢!!!!!!附原来保存的代码:CFileDialog dlg(false,"bmp",NULL, OFN_OVERWRITEPROMPT,
"位图文件(*.bmp)|*.bmp||",
NULL);

CDC* pChartDC;
pChartDC = m_chart.GetDC(); 

RECT mschartRect; 
    m_chart.GetClientRect(&mschartRect);
    int mschartWidth = mschartRect.right - mschartRect.left; 
    int mschartHeight = mschartRect.bottom - mschartRect.top; 

CBitmap myBitmap;
myBitmap.CreateCompatibleBitmap(pChartDC, mschartWidth, mschartHeight);

CDC myCopy; 
    myCopy.CreateCompatibleDC(pChartDC);

myCopy.SelectObject(myBitmap);
    myCopy.BitBlt(0, 0, mschartWidth, mschartHeight, pChartDC,0,0,SRCCOPY);

BITMAP   bits; 
    myBitmap.GetBitmap(&bits);

OpenClipboard(); 
    EmptyClipboard(); 

SetClipboardData(CF_BITMAP,myBitmap.GetSafeHandle()); 
    CloseClipboard();

if(dlg.DoModal()==IDOK) 

CString filePath = dlg.GetPathName();
if(!OpenClipboard())
return; 

if(!IsClipboardFormatAvailable(CF_BITMAP))

AfxMessageBox("CF_BITMAP not available");
CloseClipboard();
return;


HBITMAP hData = (HBITMAP)GetClipboardData(CF_BITMAP); 

CloseClipboard(); 
PBITMAPINFO pbi = CreateBitmapInfoStruct(m_hWnd, hData); 
CreateBMPFile(m_hWnd, filePath.GetBuffer(0), pbi, hData, ::GetDC(m_hWnd));
}

解决方案 »

  1.   

    想要解决生成文件路径的问题吗?
    以bmp文件的编号加日期可以生成唯一的文件名
      

  2.   

    CTime now = CTime::GetCurrentTime();
    CString changetime = now.Format("%B%d%H%M%S");这个生成日期时间字符串
      

  3.   

    如果说的是类型问题的话,直接文件名变量后加“.bmp”就行了。也可能我会错意了……现在的人问问题为什么都没直接了当得说明白……
      

  4.   

    CTime now = CTime::GetCurrentTime();
    CString changetime = now.Format("%B%d%H%M%S");char Dir[256];
    ::GetCurrentDirectory(256,Dir);
    strcat(Dir,changetime);
    strcat(Dir,".bmp");这样一组合就可以得到一个字符串如"Dec1214140512.bmp"这样
      

  5.   

    ...if(dlg.DoModal()==IDOK)   
    {   
    CString   filePath   =   dlg.GetPathName(); 
    if(!OpenClipboard()) 
    return;   if(!IsClipboardFormatAvailable(CF_BITMAP)) 
    {   
    AfxMessageBox("CF_BITMAP   not   available"); 
    CloseClipboard(); 
    return; 
    }   修改为:...
    CTime now = CTime::GetCurrentTime();
    CString changetime = now.Format("%B%d%H%M%S");char Dir[256];
    ::GetCurrentDirectory(256,Dir);
    strcat(Dir,changetime);
    strcat(Dir,".bmp");filePath   =   Dir; 
    if(!OpenClipboard()) 
    return;   即可。
      

  6.   

    不涉及到路径 那就直接writefile 就是了 
      

  7.   

    HANDLE   hFile=CreateFile(YourFileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 
    if(hFile!=INVALID_HANDLE_VALUE) 

    DWORD   dwRet=0; 
    //填充文件头 
    BITMAPFILEHEADER   bmfHeader; 
    ZeroMemory(&bmfHeader,sizeof(bmfHeader)); 
    bmfHeader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); 
    bmfHeader.bfSize=bi.bmiHeader.biSizeImage+bmfHeader.bfOffBits; 
    bmfHeader.bfType=((WORD) ('M' << 8) | 'B'); 
    WriteFile(hFile,&bmfHeader,sizeof(bmfHeader),&dwRet,NULL); 
    WriteFile(hFile,&bi.bmiHeader,sizeof(bi.bmiHeader),&dwRet,NULL); 
    WriteFile(hFile,pBits,bi.bmiHeader.biSizeImage,&dwRet,NULL); 
    CloseHandle(hFile); 
    }yourFileName就是你想保存的文件名地址如C:\test.bmp
      

  8.   

    对话框只是起个 添加 文件保存路径和文件名 的作用把下面这部分干掉
    if(dlg.DoModal()==IDOK)   
    {   
    CString   filePath   =   dlg.GetPathName(); 
    if(!OpenClipboard()) 
    return;   if(!IsClipboardFormatAvailable(CF_BITMAP)) 
    {   
    AfxMessageBox("CF_BITMAP   not   available"); 
    CloseClipboard(); 
    return; 
    }   自己定个
    CString   filePath   =   “fuckyou.bmp”不就了事了
    真他妈的SB啊
      

  9.   

    楼上的说得有道理CString       filePath       =       “fuckyou.bmp” 
    好像要加个路径吧
    如:
    CString       filePath       =       “C:\fuckyou.bmp”