Re: Как сменить формат бумаги на принтере?
От: Аноним  
Дата: 12.11.04 15:32
Оценка:
Здравствуйте, DNS, Вы писали:

> Как сменить формат бумаги на принтере?


BOOL SetPaperSize( LPTSTR strPrinterName, const UINT& nPaperHeight, const UINT& nPaperWidth )
{
HANDLE ph = 0;
BOOL bRet = TRUE;
DEVMODE* pDevMode = 0;
try
{
if ( !OpenPrinter( strPrinterName, &ph, 0) )
{
throw 0;
}
LONG len = DocumentProperties( 0, ph, strPrinterName, 0, 0, 0);
if (len <= 0)
{
throw 0;
}
pDevMode = (DEVMODE*) new BYTE[ len ];
memset( pDevMode, 0, len );
if (DocumentProperties( 0, ph, strPrinterName, dm, 0, DM_OUT_BUFFER ) < 0)
{
throw 0;
}
dm->dmFields = DM_PAPERLENGTH | DM_PAPERWIDTH;
// new paper size
dm->dmPaperLength = nPaperHeight;
dm->dmPaperWidth = nPaperWidth;
DocumentProperties( 0, ph, strPrinterName, pDevMode, dm, DM_OUT_BUFFER | DM_IN_BUFFER);
}
catch (...)
{
assert( 0 );
bRet = FALSE;
}
if ( ph ) ClosePrinter( ph );
delete [] (BYTE*) pDevMode;
return bRet;
}

любой размер бумаги можно установить, если в свойствах принтера по умолчанию для paper size выбрано Custom
если выбрано Statdard, то таким способом можно установить бумагу только из предлогаемого списка, в противном случае размеры бумаги будут автоматически сброшены в default
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.