我在组件里面创建元文件,在客户程序中根据传递出来的元文件句柄显示该元文件。
   在元文件中,我画的是一些公式,有字符(选择不同的字体画),有根号(用直线
   画),还有括号(我用贝塞尔曲线画的,用刷子填充出来的),等等一些符号。
   现在我想要反显该元文件,在组件程序中我想通过调用SetRop2(R2_Not)来反显,也就
是字符和直线都变成白色,底色变成黑色,但是没有实现该效果。不知道为啥不行呢?请大虾指点呀??
   我用来显示元文件的的代码如下:
        ::EnumEnhMetaFile(dc.m_hDC,hEmf,
EnhMetaFileProc,  //回调函数
&nDispMode,
&rct);
int CALLBACK EnhMetaFileProc(HDC hdc,HANDLETABLE FAR* lpHTable,const   ENHMETARECORD FAR* lpEMFR, int nObj,LPARAM lpData)
{
::SetBkMode(hdc,TRANSPARENT);
//反显标志
SetROP2(hdc,R2_NOT);
::SetTextColor(hdc,RGB(255,255,255));
::PlayEnhMetaFileRecord(hdc,lpHTable,lpEMFR,nObj);
return 1;
}
     我自己分析,我做了一个小的测试程序,也用这段话调用元文件,可以反显该元文件,但是我一调用我的这个程序就是不能反显,
     
     下面是我创建元文件的代码:
HENHMETAFILE CFormulaView::GetMetaFile()
{
    static HENHMETAFILE hemf=NULL;
if (hemf!=NULL)
{
::DeleteEnhMetaFile(hemf);
::DeleteObject(hemf);
} CMetaFileDC mDC;
//创建MetaFile设备
if(mDC.CreateEnhanced(NULL,NULL,NULL,_T("TEST"))==FALSE)

char ErrChar[100];
sprintf(ErrChar,"无法建立METAFILE,错误号为% d",
                   ::GetLastError());
AfxMessageBox(ErrChar);
return NULL;
}
HDC hDC =::GetDC(NULL);
mDC.SetAttribDC(hDC);
mDC.SetMapMode(MM_TEXT); 
for(int i=0;i<m_totalLine;i++)//在设备上画公式
    DrawExpression(m_EditLine[i].expRoot,&mDC);
         hemf=mDC.CloseEnhanced();
return hemf;
}
    我估计是我在创建元文件的时候,是不是有些什么GDI对像是不能使用的,比方说
字体,刷子,画笔等等有什么限制,但是具体我没有找到资料弄明白到底是什么原因?     
     也就是我的DrawExpression函数中绘制的图形有什么限制么??