пятница, 8 февраля 2013 г.

восстановление настроек принтера tprinter printer_info_2

HDC hDC = CreateDC(NULL, pPI->pPrinterName, NULL, pPI->pDevMode);

// Работаем со структурой

LPPRINTER_INFO_2 pPI = (LPPRINTER_INFO_2)pBufpi;

if(dwLastErr == ERROR_SUCCESS)

pBufpi = new BYTE[dwSzNeeded];

if(dwLastErr == ERROR_INSUFFICIENT_BUFFER)

while(!GetPrinter(hPrinter, 2, pBufpi, dwSzNeeded, &dwSzNeeded))

// Получение структуры PRINTER_INFO_2 для данного хэндла

if(dwLastErr == ERROR_SUCCESS && OpenPrinter(pBuf, &hPrinter, NULL))

if(dwLastErr == ERROR_INSUFFICIENT_BUFFER)

while(!GetDefaultPrinter(pBuf, &dwSz))

//Получение хэндла принтера по умолчанию

Вот примерный код того, как это может быть сделано:

Помимо имени принтера, функция CreateDC принимает в качестве параметра указатель на специальную структуру DEVMODE, которая содержит информацию об окружении и настройках принтера. В нее входят упоминавшиеся уже параметры бумаги, количество копий документа, коэффициент масштабирования и т.д. Получить эту структуру можно с помощью функции GetPrinter со вторым информационным уровнем (information level). Информационный уровень определяет тип информации о принтере, получаемой с помощью функции GetPrinter.

Кроме этого, все доступные принтеры могут быть перечислены с помощью функции EnumPrinters.

GetProfileString(_T("Windows"),_T("Device"),_T(",,,"),szName,

Для печати создается специальный контекст принтера (printer device context). Создать контекст принтера можно с помощью функции CreateDC, которой передается имя принтера. Имя принтера, выбранного текущим пользователем в качестве «принтера по умолчанию», можно получить, воспользовавшись функцией GetDefaultPrinter, пример использования которой будет приведен ниже. К сожалению, функция GetDefaultPrinter доступна только в операционных системах Windows 2000/XP и старше. Поэтому в версиях ОС Windows 9х и NT 4.0 приходится пользоваться функцией GetProfileString, получающей принтер по умолчанию из системного ini-файла:

Одним из основных достоинств вывода графической информации под Windows является абстрагирование от конкретного устройства вывода, будь то монитор, принтер или, скажем, какой-нибудь другое «экзотическое» устройство. С помощью одних и тех же функций GDI вы можете «рисовать» на любом устройстве. Однако сам процесс «рисования» при этом существенно различается. Это связано с тем, что при печати вы должны учитывать некоторые особенности принтера (например, разрешение), параметры бумаги (ориентация, размер) и проч.

Печать в WTLПечать документов с использованием библиотеки WTLАвтор: The RSDN GroupИсточник: Опубликовано: 09.11.2003Исправлено: 13.03.2005Версия текста: 1.0 Архитектура печати в Win32 API

Печать в WTL P PP PP P PP PP PPPОценить P

Комментариев нет:

Отправить комментарий