QQ登录

只需一步,快速开始

上位机MFC实现EMF格式文件的读取

[ 复制链接 ]
请点击此处下载

查看状态:已购买或有权限

您的用户组是:游客

文件名称:上位机MFC实现EMF格式文件的读取.rar 
文件大小:54.05 KB 
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


例程可以通过VC2010打开转换版本,再编译。
界面有打开文件按钮,可以下载查看使用
源代码为:

  1. void CEmfReaderDlg::OnBnClickedOk()
  2. {
  3.         CString szFilter( L"Emf Files (*.emf)|*.emf||" ) ;

  4.         CFileDialog FileDlg(TRUE,CString( L"EMF") ,NULL,
  5.                 OFN_FILEMUSTEXIST|OFN_NONETWORKBUTTON|
  6.                 OFN_PATHMUSTEXIST,szFilter);
  7.         FileDlg.DoModal();

  8.         // To get the selected file's path and name
  9.         CString strFileName;
  10.         strFileName = FileDlg.GetPathName();

  11.         if(strFileName.IsEmpty())
  12.                 return ;
  13.         TRACE(L"FileName:%s\n",strFileName) ;
  14.         memset( &m_EnhMetaHeader , 0 , sizeof( ENHMETAHEADER ) ) ;
  15.         m_strEmfFile = strFileName ;

  16.         if( m_File.GetFileName().GetLength() > 0 )
  17.                 m_File.Close() ;
  18.         if (!m_File.Open(strFileName ,CFile::modeRead , &m_FileException))
  19.         {
  20.                 TCHAR szError[1024];
  21.                 m_FileException.GetErrorMessage(szError, 1024);
  22.                 TRACE(L"Couldn't open source file::%s,errormsg:s\n",strFileName,szError) ;
  23.                 return ;
  24.         }
  25.         DWORD dwReaded ;
  26.         dwReaded = m_File.Read( &m_EnhMetaHeader , sizeof( ENHMETAHEADER ) ) ;
  27.         if( dwReaded < sizeof( ENHMETAHEADER ) )
  28.         {
  29.                 TRACE("Read meta header error!\n") ;
  30.                 m_File.Close() ;
  31.                 return ;
  32.         }
  33.         if( m_EnhMetaHeader.dSignature!=0x464d4520)
  34.         {
  35.                 TRACE("This file is not emf file.\n");
  36.                 m_File.Close() ;
  37.                 return;
  38.         }
  39.         if ( m_EnhMetaHeader.nDescription > 0 )
  40.         {
  41.                 //file.Seek(eh.offDescription,CFile::begin);
  42.                 TCHAR *szDesciption ;
  43.                 szDesciption = new TCHAR[m_EnhMetaHeader.nDescription+1] ;
  44.                 memset( szDesciption , 0 , sizeof( TCHAR) * (m_EnhMetaHeader.nDescription+1));
  45.                 dwReaded = m_File.Read(szDesciption , m_EnhMetaHeader.nDescription * sizeof( TCHAR) ) ;
  46.                 if( dwReaded == m_EnhMetaHeader.nDescription * sizeof( TCHAR) )
  47.                 {
  48.                         TRACE(L"description:%s\n",szDesciption);
  49.                 }
  50.                 //file.Seek( sizeof( ENHMETAHEADER ) , CFile::begin) ;
  51.                 delete szDesciption ;
  52.         }
  53.         CreateMemDCandBitmap() ;
  54.         m_dwEmfRecord = 0 ;
  55. }
复制代码



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索