C++ 创建图元文件时奇怪的函数失败
下一个函数导致断言失败,为什么C++ 创建图元文件时奇怪的函数失败,c++,mfc,gdi,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(); } 另外,我在调试时注意到,当第二次调用它时,它会
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方法两次呢?谢谢。您的描述参数不正确。这是MSDN的一段引文 LPSZSDescription参数指向的字符串必须包含 应用程序名称和图片名称之间的空字符,以及 必须以两个空字符结尾-例如,“XYZ图形” 编辑器\0秃鹰\0\0,“其中\0表示空字符。如果 lpszDescription为空,列表中没有相应的条目 增强的图元文件头 此外,不需要用CString包装文本字符串
meta.CreateEnhanced(pDC,
_T("Square.emf"),
CRect(0,0,100,100),
_T("My program\0Simple square\0"));
例如有太多的原因可以解释为什么会出现分段错误。在调试期间,您应该查看哪些变量未初始化或为空;“破坏者会帮你做的。”@Raxvan我检查了所有东西,至少我认为是这样。@john把它拿走了,还是一样。谢谢,但看起来还有别的东西。试过了,但还是一样。。。我甚至试过用NULL作为描述。。。它创建了元文件,但里面什么都没有。。。