对于某些打印机以及某些Windows环境,在设置打印机时CreateDC()方法失败

时间:2018-08-31 10:50:30

标签: c++ winapi msdn

我已经安装了HP打印机并将其添加到我的打印机设备列表中。 我正在尝试使用以下代码:

    QString printerName = "HP Designjet 500 24+HPGL2 Card";
    DWORD infoSize, numBytes;
    HANDLE hPrinter;
    bool ok = OpenPrinter( ( LPWSTR )printerName.utf16(), ( LPHANDLE )&hPrinter, 0 );
    if ( !ok )
    {
        qErrnoWarning( "QWin32PrintEngine::initialize: OpenPrinter failed" );
        return;
    }
    GetPrinter( hPrinter, 2, NULL, 0, &infoSize );
    HGLOBAL hMem;
    hMem = GlobalAlloc( GHND, infoSize );
    PRINTER_INFO_2 *pInfo;
    pInfo = ( PRINTER_INFO_2* )GlobalLock( hMem );
    ok = GetPrinter( hPrinter, 2, ( LPBYTE )pInfo, infoSize, &numBytes );
    if ( !ok )
    {
        qErrnoWarning( "QWin32PrintEngine::initialize: GetPrinter failed" );
    }
    DEVMODE *devMode;
    devMode = pInfo->pDevMode;
    HDC hdc = NULL;
    hdc = CreateDC( NULL, ( LPCWSTR )printerName.utf16(), 0, devMode );

现在,CreateDC()方法失败。我什至尝试使用GetLastError()方法返回该错误,并且返回为“ 203”,对应于“ ERROR_ENVVAR_NOT_FOUND”。

到目前为止,我还是一无所知。 如果有人可以为此提供帮助,我将感到非常高兴。

谢谢。

0 个答案:

没有答案