由 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();