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

Sorry, dm заменить на pDevMode

А>Здравствуйте, 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...
Пока на собственное сообщение не было ответов, его можно удалить.