保存为文件时,有时在图形上会有一个对话框(就是保存文件的这个对话框)。除了那个::BitBlt();外,还有没有什么其他的方法把Picture Control中的图形写入到那个CImage中?下面是代码:
        CString strFilter; 
strFilter =_T("位图文件(.bmp)|*.bmp|JPEG图像文件(.jpg)|*.jpg|GIF图像文件(.gif)|*.gif|PNG图像文件(.png)|*.png||"); 
CFileDialog fileDlg(FALSE,NULL,NULL,NULL,strFilter);
fileDlg.m_ofn.lpstrTitle=_T("保存图像"); if(fileDlg.DoModal()!=IDOK)
return; CString strFileName; 
CString strExtension; 
strFileName = fileDlg.m_ofn.lpstrFile; 
if (fileDlg.m_ofn.nFileExtension == 0)

switch(fileDlg.m_ofn.nFilterIndex) 

case 1: 
strExtension=_T("bmp");
break; 
case 2: 
strExtension=_T("jpg");
break; 
case 3: 
strExtension=_T("gif");
break; 
case 4: 
strExtension=_T("png");
break; 
default: 
break; 

strFileName = strFileName+_T(".")+strExtension; 
} CWnd* pWnd = GetDlgItem(IDC_PICSHOW);   //控件ID
pWnd->GetWindowRect(&WaveRect);
ScreenToClient(&WaveRect);
CDC *pDC = pWnd->GetDC();
CImage imag;
imag.Create(WaveRect.Width(),WaveRect.Height(),32);
::BitBlt(imag.GetDC(),0,0,WaveRect.Width(),WaveRect.Height(),pDC->m_hDC,0,0,SRCERASE);
HRESULT hResult = imag.Save(strFileName);
if (FAILED(hResult))

MessageBox(_T("保存图像文件失败!")); 
}  ReleaseDC(pDC);
imag.ReleaseDC();

解决方案 »

  1.   

    你可以先得到图片,然后弹出CFileDialog对话框,得到路径以后,再imag.Save保存起来不就行了
      

  2.   

    在CDC上绘图,如何保存为bmp格式
    http://topic.csdn.net/u/20070907/11/859b4d7e-58b7-47f3-99f9-575efcdc07a8.html
      

  3.   

    回复1楼:我理解你的意思是 将后面那段代码放到前面去这个我已经试过了,确实这样文件上不会出现对话框了但是这整个函数是menu下拉框中的一个选项的响应函数,放到前面后,会将那个下拉框显示在文件中