在视图类的OnDraw函数中: HMETAFILE m_hMetaFile;CMetaFileDC * pMetaFileDC = NULL;
pMetaFileDC = new CMetaFileDC();
pMetaFileDC->Create("MetaFile.txt");
pMetaFileDC->DrawText("Use class CMetaFileDC", &rect, DT_LEFT|DT_TOP);
pMetaFileDC->Draw3dRect(200, 0, 300, 30, (COLORREF)0xff0000, (COLORREF)0x0000ff);
m_hMetaFile = pMetaFileDC->Close();
delete pMetaFileDC;
pMetaFileDC = NULL;pDC->PlayMetaFile(m_hMetaFile);               //为什么没有显示任何东西?
请问应该怎样使用CMetaFileDC,这是不是类似OpenGL中的显示列表?

解决方案 »

  1.   

    你把 pMetaFileDC->m_hAtrributeDC = 某个实际存在的真实的DC,然后就可以使用了,就象一般DC那样,它记录你的绘制过程与属性
      

  2.   

    如果以上语句全在OnDraw中,指定了CMetaFileDC::m_hDC可以,指定m_hAttributeDC不但画不了,还会出错;而且如果我想在其它事件里得到一个HMETAFILE然后在OnDraw中使用这个HMETAFILE应该怎样做?为什么我一个按钮事件里定义CMetaFileDC变量,并获取HMETAFILE(用一个成员变量m_hMetaFile存储),也指定了CMetaFileDC::m_hDC,  
    在OnDraw中,我调用pDC->PlayMetaFile(m_hMetaFile)却没有绘制;
      

  3.   

    CMetaFileDC::Create()函数有什么用?MSDN上说构造对象后需要调用Create,为什么我注释掉一样能绘制图像?