Метод CreateDC (), при настройке принтера происходит сбой для некоторых принтеров, а также в определенной среде Windows - PullRequest
0 голосов
/ 31 августа 2018

Я установил принтер 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».

Я совершенно невежественна. Я был бы очень рад, если кто-то может помочь мне в этом.

Заранее спасибо.

...