любой размер бумаги можно установить, если в свойствах принтера по умолчанию для paper size выбрано Custom
если выбрано Statdard, то таким способом можно установить бумагу только из предлогаемого списка, в противном случае размеры бумаги будут автоматически сброшены в default
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