Страница 1 из 1

Ориентация страницы при печати

Добавлено: 06 дек 2006, 15:11
pots
Здравствуйте, :)

Есть код по MSDNу:

Код: Выделить всё

dwDevSize = DocumentProperties(NULL,hPrinter,pinfo5[iPrinter].pPrinterName,NULL,NULL,NULL);

if(pDevMode)HeapFree(GetProcessHeap(),0,pDevMode);
pDevMode = (LPDEVMODE)HeapAlloc(GetProcessHeap(),HEAP_NO_SERIALIZE,dwDevSize);

DocumentProperties(NULL,hPrinter,pinfo5[iPrinter].pPrinterName,pDevMode,NULL,DM_OUT_BUFFER);
	
pDevMode->dmOrientation = 0;
pDevMode->dmFields = DM_ORIENTATION;

DocumentProperties(NULL,hPrinter,pinfo5[iPrinter].pPrinterName,pDevMode,pDevMode,DM_IN_BUFFER || DM_OUT_BUFFER);

Вопрос в том, какие значения принимает поле dmOrientation? По умолчанию это 1, если меняю его на 0 или 2, никакого результата это не приносит :( Может что-то не то делаю?

Re: Ориентация страницы при печати

Добавлено: 06 дек 2006, 15:27
Hawk
Думаю проблема в последней строчке,
вместо -
DM_IN_BUFFER || DM_OUT_BUFFER
в Си надо писать -
DM_IN_BUFFER | DM_OUT_BUFFER

|| это логическая операция OR, которая на практике возвратит 0 или 1 у тебя скорее всего всегда 1, а надо битовое сложение которое делается с помощью одинарной |

и не 0 а 2 -
MSDN писал(а): dmOrientation
For printer devices only, selects the orientation of the paper. This member can be either DMORIENT_PORTRAIT (1) or DMORIENT_LANDSCAPE (2).

Re: Ориентация страницы при печати

Добавлено: 06 дек 2006, 15:46
pots
Спасибо :) Дело было, именно, в | вместо ||
Век живи век учись!