由CreateDC函数引起的调试断言失败

问题描述

调试断言失败(图片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;
}

布尔Druk :: ZakonczDruk()

{
    EndDoc(hDC);
    //EndPage(hDC);
    DeleteDC(hDC);
    return TRUE;
}

解决方法

看来您正在使用MFC的CDC类,

hDC.CreateDC(DriverName,DeviceName,OutputName,NULL);

出于对称性考虑,也可以通过该类的方法将其删除:CDC::DeleteDC

hDC.DeleteDC();