由 CreateDC() 函数引起的调试断言失败
Debug Assertion Failed caused by CreateDC() function
我遇到调试断言失败的问题(图片)Debug Assertion Failed
当我第二次按下对话框上的“打印”按钮时会出现此问题。 (第一次工作很好)
对话框:
Dialog Box
调试代码估计是我第二次创建DC的时候造成的。
但我可以解释原因,因为我更早地通过 DeleteDC() 函数删除了 DC。
下面是我初始化 DC 和删除 DC 时的代码片段。
BOOL Druk::StartPrint()
{
//Configuration();
hDC.CreateDC(DriverName, DeviceName, OutputName, NULL);
StartDoc(hDC, NULL);
//StartPage(hDC);
return TRUE;
}
BOOL Druk::ZakonczDruk()
{
EndDoc(hDC);
//EndPage(hDC);
DeleteDC(hDC);
return TRUE;
}
看起来您正在使用 MFC 的 CDC
class,
证明了这一点
hDC.CreateDC(DriverName, DeviceName, OutputName, NULL);
为了对称起见,也用class'方法删除它:CDC::DeleteDC
hDC.DeleteDC();
我遇到调试断言失败的问题(图片)Debug Assertion Failed 当我第二次按下对话框上的“打印”按钮时会出现此问题。 (第一次工作很好) 对话框: Dialog Box
调试代码估计是我第二次创建DC的时候造成的。 但我可以解释原因,因为我更早地通过 DeleteDC() 函数删除了 DC。 下面是我初始化 DC 和删除 DC 时的代码片段。
BOOL Druk::StartPrint()
{
//Configuration();
hDC.CreateDC(DriverName, DeviceName, OutputName, NULL);
StartDoc(hDC, NULL);
//StartPage(hDC);
return TRUE;
}
BOOL Druk::ZakonczDruk()
{
EndDoc(hDC);
//EndPage(hDC);
DeleteDC(hDC);
return TRUE;
}
看起来您正在使用 MFC 的 CDC
class,
hDC.CreateDC(DriverName, DeviceName, OutputName, NULL);
为了对称起见,也用class'方法删除它:CDC::DeleteDC
hDC.DeleteDC();