各位大大安啊
我想问一下如何把拷屏后的图片存为.jpg或者.bmp
我在网上查了一下 拷屏代码和打开文件框可以写成下面这样 
我想问一下具体的保存为BMP和JPG格式的代码要怎么写啊 //-------------------------------------------------------拷屏代码
CDC  MemDc;//  屏幕和内存设备描述表  
    CClientDC ScrDc(this);  
    CBitmap  ScrBmp; 
    CRect  rect;  
    GetClientRect(&rect);  
    MemDc.CreateCompatibleDC(&ScrDc);  
    ScrBmp.CreateCompatibleBitmap(&ScrDc,rect.Width(), rect.Height());  
    //屏幕分辨率为800x600  
    CBitmap*  pOld=MemDc.SelectObject(&ScrBmp); 
    MemDc.BitBlt(0,0,rect.Width(), rect.Height(),&ScrDc,0,0,SRCCOPY);//拷屏  
    MemDc.SelectObject(pOld);    
    //输出到剪贴板
    OpenClipboard();
    EmptyClipboard();
    SetClipboardData(CF_BITMAP, ScrBmp.GetSafeHandle());
//关闭剪贴板
    CloseClipboard();

//------------------------------------------------------------------------调用保存文件框
CString strExt = ".jpg";                                // 扩展名
    CString strFilePath;
    CString strFilter;
    strFilter.Format("图像文件 (*jpg)|*jpg|All Files (*.*)|*.*||");
CFileDialog dlg(FALSE, NULL, "", NULL, strFilter);
if(dlg.DoModal()==IDOK)
{
strFilePath = dlg.GetPathName();
if (strFilePath.Find(strExt) == -1)
        {
            strFilePath += strExt;
        }
        if ( access(strFilePath, 0) == 0 )
        {
            CString strQuery;
            strQuery.Format("%s 已经存在,要替换它吗?", strFilePath);
            if ( IDNO == ::MessageBox(m_hWnd, strQuery, "文件覆盖询问", MB_ICONQUESTION | MB_YESNO) )
            {
                return;
            }
        }
        FILE *fp = fopen(strFilePath, "wt+");

解决方案 »

  1.   

    http://blog.csdn.net/mynamelj/archive/2006/10/10/1329079.aspx
      

  2.   

    用CImage很简单   #include <atlimage.h>CDC  MemDc;//  屏幕和内存设备描述表 
        CClientDC ScrDc(this); 
        CBitmap  ScrBmp;
        CRect  rect; 
        GetClientRect(&rect); 
        MemDc.CreateCompatibleDC(&ScrDc); 
        ScrBmp.CreateCompatibleBitmap(&ScrDc,rect.Width(), rect.Height()); 
        //屏幕分辨率为800x600 
        CBitmap*  pOld=MemDc.SelectObject(&ScrBmp);
        MemDc.BitBlt(0,0,rect.Width(), rect.Height(),&ScrDc,0,0,SRCCOPY);//拷屏 
        MemDc.SelectObject(pOld);
    ATL::CImage img;   
    img.Attach((HBITMAP)ScrBmp);   
    img.Save(_T("C:\\111.bmp"));   
    img.Detach(); 
      

  3.   

    可以搜个叫CxImage类,很强大的类库
      

  4.   

    //直接从以前测试代码拷贝出来的。嘿嘿很好用不。不过不是我写的,不知道是那个大虾写的。哈哈你就用吧!
    CImage imgOriginal;
    // imgOriginal.Attach(*TempBitmap2);//TempBitmap2这个是要保存的位图指针
    //CString strFilter;
    //CSimpleArray<GUID> aguidFileTypes;
    //TRACE("12");
    //HRESULT hResult; //strFilter = "Bitmap image|*.bmp|JPEG image|*.jpg|GIF image|*.gif|PNG image|*.png||";
    //int m_nFilterLoad = 0;
    //TRACE("13");
    //CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER,strFilter);
    //TRACE("14");
    //dlg.m_ofn.nFilterIndex = m_nFilterLoad;
    //hResult = (int)dlg.DoModal();
    //if (FAILED(hResult)) {
    // return false;
    //} //// Add the appropriate extension if the user didn't type one //CString strFileName;
    //CString strExtension;
    //strFileName = dlg.m_ofn.lpstrFile; //// add the file extension if the user didn't supply one
    //if (dlg.m_ofn.nFileExtension == 0) 
    //{
    // switch (dlg.m_ofn.nFilterIndex)
    // {
    // case 1:
    // strExtension = "bmp";
    // break;
    // case 2:
    // strExtension = "jpg";
    // break;
    // case 3:
    // strExtension = "gif";
    // break;
    // case 4:
    // strExtension = "png";
    // break;
    // default:
    // break;
    // } // strFileName = strFileName + '.' + strExtension; //} //// the extension on the file name will determine the file type that is saved
    //hResult = imgOriginal.Save(strFileName);
    //if (FAILED(hResult)) {
    // CString fmt;
    // fmt.Format("Save image failed:\n%x - %s", hResult, _com_error(hResult).ErrorMessage());
    // ::AfxMessageBox(fmt);
    // return false;
    //}
      

  5.   

    bmp jpg gif png都有了