void CClientMain::OnScreenShot()
{
	CxImage ScreenImage = m_ScreenDisplayer.GetDisplayImage();
	//if (ScreenImage.CreateFromHBITMAP(m_ScreenDisplayer.GetDisplayImage()))
	{
		ScreenImage.SetJpegQuality(m_dlgSetup.GetImageQuality());
		TCHAR filter[] = _T("(*.bmp)|*.bmp |(*.gif)|*.gif|(*.jpg)|*.jpg|(*.png)|*.png|(*.tif)|*.tif|(*.tga)|*.tga|(*.pcx)|*.pcx|(*.wbmp)|*.wbmp|(*.wmf)|*.wmf|(*.jp2)|*.jp2|(*.jpc)|*.jpc|(*.pgx)|*.pgx|(*.raw)|*.raw||");
		CFileDialog SaveDlg(false,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,filter);
		if (IDOK == SaveDlg.DoModal())
		{
			CString FilePathName = SaveDlg.GetPathName();
			std::map<int,const wchar_t* const> mapFileExt;//保存所要用到的文件后缀名
			std::map<int,DWORD> mapSaveType;//保存所要的图片保存类型对应的CxImage宏
			mapFileExt.insert(std::make_pair(1,_T(".bmp")));
			mapFileExt.insert(std::make_pair(2,_T(".gif")));
			mapFileExt.insert(std::make_pair(3,_T(".jpg")));
			mapFileExt.insert(std::make_pair(4,_T(".png")));
			mapFileExt.insert(std::make_pair(5,_T(".tif")));
			mapFileExt.insert(std::make_pair(6,_T(".tga")));
			mapFileExt.insert(std::make_pair(7,_T(".pcx")));
			mapFileExt.insert(std::make_pair(8,_T(".wbmp")));
			mapFileExt.insert(std::make_pair(9,_T(".wmf")));
			mapFileExt.insert(std::make_pair(10,_T(".jp2")));
			mapFileExt.insert(std::make_pair(11,_T(".jpc")));
			mapFileExt.insert(std::make_pair(12,_T(".pgx")));
			mapFileExt.insert(std::make_pair(13,_T(".raw")));
	
			mapSaveType.insert(std::make_pair(1,CXIMAGE_FORMAT_BMP));
			mapSaveType.insert(std::make_pair(2,CXIMAGE_FORMAT_GIF));
			mapSaveType.insert(std::make_pair(3,CXIMAGE_FORMAT_JPG));
			mapSaveType.insert(std::make_pair(4,CXIMAGE_FORMAT_PNG));
			mapSaveType.insert(std::make_pair(5,CXIMAGE_FORMAT_TIF));
			mapSaveType.insert(std::make_pair(6,CXIMAGE_FORMAT_TGA));
			mapSaveType.insert(std::make_pair(7,CXIMAGE_FORMAT_PCX));
			mapSaveType.insert(std::make_pair(8,CXIMAGE_FORMAT_WBMP));
			mapSaveType.insert(std::make_pair(9,CXIMAGE_FORMAT_WMF));
			mapSaveType.insert(std::make_pair(10,CXIMAGE_FORMAT_JP2));
			mapSaveType.insert(std::make_pair(11,CXIMAGE_FORMAT_JPC));
			mapSaveType.insert(std::make_pair(12,CXIMAGE_FORMAT_PGX));
			mapSaveType.insert(std::make_pair(13,CXIMAGE_FORMAT_RAW));

			int						nFileExt = SaveDlg.m_ofn.nFilterIndex;
			const wchar_t *const 	tFileExt = mapFileExt[nFileExt];
			DWORD					dwSaveType = mapSaveType[nFileExt];
			if(FilePathName.Right(4) !=tFileExt) 
			{
				FilePathName += tFileExt; 
				ScreenImage.Save(FilePathName.GetString() ,dwSaveType);
			}
		}
	}

}
Exemplo n.º 2
0
type8 ms_save_file(type8s *name, type8 *ptr, type16 size)
{
  CMagneticApp* pApp = (CMagneticApp*)AfxGetApp();
  CString strLoadName;
  FILE *fh;

  if (name == NULL)
  {
    CMagneticView* pView = CMagneticView::GetView();
    if (pView == NULL)
      return 0;

    SimpleFileDialog SaveDlg(FALSE,NULL,pView->GetFileName(),OFN_HIDEREADONLY|OFN_ENABLESIZING,
      "Saved Game Files (*.sav)|*.sav|All Files (*.*)|*.*||",pView);
    SaveDlg.m_ofn.lpstrTitle = "Save the Current Game";

    if (ms_is_running())
      pApp->SetRedrawStatus(CMagneticApp::Redraw::ThisLine);
    if (SaveDlg.DoModal() == IDOK)
    {
      strLoadName = SaveDlg.GetPathName();
      pView->GetFileName() = strLoadName;
    }
    else
      return 0;
  }
  else
    strLoadName = (char*)name;

  if ((fh = fopen(strLoadName,"wb")) == NULL)
    return 1;
  if (fwrite(ptr,1,size,fh) != size)
    return 1;
  fclose(fh);
  return 0;
}