创建图元文件时,奇怪的功能失败

时间:2013-11-29 11:27:19

标签: c++ mfc gdi

下一个函数导致断言失败,为什么?

void SimpleMeta(CDC* pDC)
{
CMetaFileDC meta;
meta.CreateEnhanced(pDC, CString("Square.emf"), CRect(0,0,100,100),CString("Simple square"));
meta.Rectangle(10,10,90,90);
meta.CloseEnhanced();
meta.DeleteDC();
}

另外,我注意到在调试时它第二次调用时失败了。它在OnDraw方法中调用。为什么OnDraw方法被调用两次?谢谢。

1 个答案:

答案 0 :(得分:1)

您的说明参数不正确。这是来自MSDN的引用

  

lpszDescription参数指向的字符串必须包含   应用程序名称和图片名称之间的空字符   必须以两个空字符终止 - 例如,“XYZ Graphics   编辑器\ 0Bald Eagle \ 0 \ 0,“其中\ 0表示空字符。如果   lpszDescription为NULL,没有相应的条目   增强型图元文件头。

此外,无需使用CString

包装文字字符串
meta.CreateEnhanced(pDC, 
    _T("Square.emf"), 
    CRect(0,0,100,100),
    _T("My program\0Simple square\0"));
例如