Создание контекста устройства (DC) принтера


Приложение может создать контекст устройства (DC) принтера в одним из двух способов:

Этот раздел содержит код, демонстрирующий последний метод.

Чтобы использовать текущий принтер, извлеките данные и проанализируйте соответствующую строку из файла Win.ini . Эта строка извлекается при помощи вызова функции GetProfileString и определение соответствующего раздела и названий записи. В случае текущего принтера, это данные сохраняются в разделе [windows]  и идентифицируются записью названной устройством. Седьмая строка в ниже следующее отрывке из Win.ini файла показывает запись для принтера Kodak Diconix .

[windows] 
    load= 
    run= 
    Beep=yes 
    Spooler=yes 
    NullPort=None 
    device=Diconix,winspool,LPT1: 
    CoolSwitch=1 
    BorderWidth=3 
    KeyboardSpeed=31 
    InitialKeyboardIndicators=2 
    CursorBlinkRate=530 
    DoubleClickSpeed=686 
    Programs=com exe bat pif cmd 
    Documents= 
    DeviceNotSelectedTimeout=15 
    TransmissionRetryTimeout=45 
    swapdisk= 
    NetWarn=1 
    fPromptOnVerbose=FALSE 
    fPromptOnWarning=FALSE 
    fPromptOnError=TRUE 
    fPrintVerbose=FALSE 
    fPrintFileLine=FALSE 
    shell= 
    ScreenSaveTimeOut=300 
    ScreenSaveActive=0 
    DebugOptions=2048 

Пример ниже показывает, как контекст устройства (DC) принтера был создан, используя данные из Win.ini.

    HDC hdcPrint;               // дескриптор DC принтера
    char szDevString[120];      // массив для данных WIN.INI
    char *szPrinter, *szDriver; // имена драйвера и принтера 
    char *szPort;               // название порта

    // Извлекаем данные о принтере, его драйвере, и 
    // название порта вывода из WIN.INI. 
 
    GetProfileString("windows", "device", ",,,", 
        szDevString, 120); 
 
    // Анализируем строку имен, устанавливаем ptrs как требуется 
    // Если строка содержит требуемые имена, используем их, чтобы 
    // создать контекст устройства. 
 
    if ((szPrinter = strtok(szDevString, 
               (const char *) ",")) 
            && (szDriver = strtok ((char *) NULL, 
               (const char *) ", ")) 
            && (szPort = strtok ((char *) NULL, 
               (const char *) ", "))) 
    {
        hdcPrint = CreateDC(szDriver, szPrinter, 
            szPort, NULL); 
    }

    // Печатаем пробную страницу, которая содержит строку 
    // "PRINTER TEST" в верхнем левом углу. 
 
    Escape(hdcPrint, STARTDOC, 8, "Test-Doc", NULL); 
    TextOut(hdcPrint, 50, 50, "PRINTER TEST", 12); 
    Escape(hdcPrint, NEWFRAME, 0, NULL, NULL); 
    Escape(hdcPrint, ENDDOC, 0, NULL, NULL); 
 
 
    // Удаляем  DC принтера. 
 
    DeleteDC(hdcPrint);  

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz