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

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
pots
Сообщения: 43
Зарегистрирован: 14 июн 2006, 14:18

Здравствуйте, :)

Есть код по 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, никакого результата это не приносит :( Может что-то не то делаю?
Hawk
Сообщения: 216
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

Думаю проблема в последней строчке,
вместо -
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).
pots
Сообщения: 43
Зарегистрирован: 14 июн 2006, 14:18

Спасибо :) Дело было, именно, в | вместо ||
Век живи век учись!
Ответить