我写了一段程序(VC6.0)在win2000下没有任何问题,但放在win98下80%的文件能打开,20%的打开后一片空白,后跟踪发现WMF的文件句柄已得到,但pDC->PlayMetalFile执行也不出错,但显示一片空白???问题是同一段代码,有的WMF文件却显示的好的,奇怪,难道PlayMetalFile在win2000和win98下有区别?请有经验的人指点!!!
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
HENHMETAFILE hEnhMeta = pDoc->GethEnhMeta();
if(hEnhMeta == NULL)
{
TRACE("error metafile!\n");
return;
} CRect rect;
GetClientRect(&rect);
pDC->PlayMetaFile( hEnhMeta, rect );
}class CTestDoc : public CDocument
{
...
// Attributes
public:
HENHMETAFILE m_hEnhMeta;// Operations
public:
HENHMETAFILE GethEnhMeta(){return m_hEnhMeta;};
....
}BOOL CTestDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO: Add your specialized creation code here
CFileStatus rStatus;
if (CFile::GetStatus(lpszPathName,rStatus) == 0)
{
CString tempstr;
tempstr.Format("%s文件不存在!",lpszPathName);
AfxMessageBox(tempstr);
return FALSE;
} m_hEnhMeta = ReadEnhMetaFile( (LPSTR)(LPCSTR)lpszPathName );
//此处读出的handle有效的,跟踪看的!!!
if( m_hEnhMeta == NULL )
{
AfxMessageBox( "WMF MetaFile文件格式不符!");
return FALSE;
} /////////Reload zoomdlg content!
CFrameWnd *pFrame = (CFrameWnd *)pApp->m_pMainWnd;
CTjcnDiagramView *pView = (CTjcnDiagramView *)(pFrame->GetActiveView());
return TRUE;
}
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
HENHMETAFILE hEnhMeta = pDoc->GethEnhMeta();
if(hEnhMeta == NULL)
{
TRACE("error metafile!\n");
return;
} CRect rect;
GetClientRect(&rect);
pDC->PlayMetaFile( hEnhMeta, rect );
}class CTestDoc : public CDocument
{
...
// Attributes
public:
HENHMETAFILE m_hEnhMeta;// Operations
public:
HENHMETAFILE GethEnhMeta(){return m_hEnhMeta;};
....
}BOOL CTestDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO: Add your specialized creation code here
CFileStatus rStatus;
if (CFile::GetStatus(lpszPathName,rStatus) == 0)
{
CString tempstr;
tempstr.Format("%s文件不存在!",lpszPathName);
AfxMessageBox(tempstr);
return FALSE;
} m_hEnhMeta = ReadEnhMetaFile( (LPSTR)(LPCSTR)lpszPathName );
//此处读出的handle有效的,跟踪看的!!!
if( m_hEnhMeta == NULL )
{
AfxMessageBox( "WMF MetaFile文件格式不符!");
return FALSE;
} /////////Reload zoomdlg content!
CFrameWnd *pFrame = (CFrameWnd *)pApp->m_pMainWnd;
CTjcnDiagramView *pView = (CTjcnDiagramView *)(pFrame->GetActiveView());
return TRUE;
}
我的[email protected]