C ++打印:打印机卡纸,我做错了什么?

时间:2010-06-08 18:46:38

标签: c++ winapi printing

我在使用C ++打印时遇到问题。据我所知,这段代码曾经在我以前的打印机上运行,​​但自从我再买一台(HP C7280)后,它开始出现问题。每当我尝试打印任何东西,甚至是空页时,页面都会打印机。我必须手动从打印机中删除页面。我不知道为什么会这样。我做错了什么,是驱动程序问题,有更好的方法在C ++中打印吗?我使用的是Windows 7 64位,但是当我使用Windows Vista 64位时,这个问题也出现了。我使用以下代码:

PRINTDLG pd;
ZeroMemory(&pd, sizeof(pd));
pd.lStructSize = sizeof(pd);
pd.hwndOwner   = mainWindow;
pd.hDevMode    = NULL;
pd.hDevNames   = NULL;     
pd.Flags       = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC;
pd.nCopies     = 1;
pd.nMinPage    = 1;
pd.nMaxPage    = 0xFFFF;

if (PrintDlg(&pd)==TRUE) 
{
    DOCINFO di;

    di.cbSize       = sizeof(DOCINFO);
    di.lpszDocName  = "Rumitec en Roblaco Print";
    di.lpszOutput   = (LPTSTR)NULL;
    di.fwType       = 0;

     // Start printing
    StartDoc(pd.hDC, &di);
    StartPage(pd.hDC);
    initPrinter(pd.hDC);

    // ...
    // Do some drawing
    // ...

    // End printing
    EndPage(pd.hDC);
    EndDoc(pd.hDC);
    DeleteDC(pd.hDC);
}

我做错了吗?或者,是否有更好,更简单,更现代的方式来做到这一点?

编辑:我可以在没有卡纸的情况下从任何其他应用程序打印。记事本,Word等,每个其他应用程序都可以打印得很好。

1 个答案:

答案 0 :(得分:0)

我认为您可能会因软件而导致打印机卡纸。只需打印边缘 - 这不是很多应用程序所做的 - 您可以轻松地发现打印机硬件/驱动程序问题,在边缘附近打印会导致打印头卡在纸张中。