Unerwarteter "Fehler beim Druck" (Error LL_ERR_PRINTING), Brother-Druckertreiber

Gilt ab List & Label 10
Manche Original-Brother-Druckertreiber scheinen nicht mehrere Druckjobs auf dem gleichen Device Context durchführen zu können. Das zeigt sich bei List & Label, wenn die Seitenzahl so groß wird, daß List & Label mehrere Druckjobs verwendet (siehe LL_PRNOPT_JOBPAGES) oder beim zweiten Druck aus dem Preview.

Abhilfe: Entweder aktuelle Treiber von http://solutions.brother.com laden, oder entsprechenden Alternativtreiber, z.B.:

HL1240 - HP LaserJet IIP
HL1250, HL1270N - HP LaserJet 4

benutzen.

Unabhängig von List & Label reproduzierbar mit dem folgenden Code:
#include <windows.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
    PRINTDLG pd = {0};
    DOCINFO di = {0};
    
    pd.lStructSize = sizeof(pd);
    pd.Flags = PD_RETURNDC | PD_RETURNDEFAULT;
    PrintDlg(&pd);
    
    di.cbSize = sizeof(di);
    di.lpszDocName = "test";
    
    for (int i = 0; i < 2; ++i)
    {
        if (StartDoc(pd.hDC,&di) <= 0)
        {
             printf("error %25d, DC=%25x, err=%25x\n",i,pd.hDC,GetLastError());
             break;
        }
    StartPage(pd.hDC);
    Rectangle(pd.hDC,0,0,1000,1000);
    EndPage(pd.hDC);
    EndDoc(pd.hDC);
    }
DeleteDC(pd.hDC);
return(0);
}
IDKBTD000619 KBTD000619