Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 390

.pdf
Скачиваний:
3
Добавлен:
30.04.2022
Размер:
1.12 Mб
Скачать

short dmColor;// цветной или нецветной режим

(DMCOLOR_COLOR или DMCOLOR_MONOCHROME) short dmDuplex;// установка дуплексной или двухсторонней

печати

short dmYResolution;// разрешение печати по оси y в dpi (если не задано, то определяется dmPrintQuality)

short dmTTOption;// определяет как шрифт TrueType® будет напечатан

short dmCollate;// посылать данные на принтер для каждой копии или только для первой из копий

BCHAR dmFormName[CCHFORMNAME];// имя использующейся формы (только для Windows NT)

WORD dmLogPixels;// количество пикселей

DWORD dmBitsPerPel;// количество бит для вывода цветной точки

DWORD dmPelsWidth;// ширина экрана в пикселах DWORD dmPelsHeight;// высота экрана в пикселах

DWORD dmDisplayFlags;// значение флагов дисплея (обычно равно 0)

DWORD dmDisplayFrequency;/* частота обновления экрана (Гц), для аппаратного значения по умолчанию равна 0 или 1*/

#if(WINVER >= 0x0400)

DWORD dmICMMethod;// только для Windows 95: как управляется ICM (цветовая подборка).

DWORD dmICMIntent;/* только для Windows 95: какой из трех режимов ICMметодов используется по умолчанию*/

DWORD dmMediaType;// только для Windows 95: тип бумаги

DWORD dmDitherType;// только для Windows 95: DWORD dmReserved1;// только для Windows 95:

зарезервировано (должно быть равно 0)

DWORD dmReserved2;// только для Windows 95:

зарезервировано (должно быть равно 0)

#endif /* WINVER >= 0x0400 */ } DEVMODE;

dmFields может содержать следующие биты, соответствующие полям.

DM_ORIENTATION - dmOrientation

101

DM_PAPERSIZE - dmPaperSize DM_PAPERLENGTH - dmPaperLength DM_PAPERWIDTH - dmPaperWidth DM_SCALE - dmScale

DM_COPIES - dmCopies DM_DEFAULTSOURCE - dmDefaultSource DM_PRINTQUALITY - dmPrintQuality DM_COLOR - dmColor

DM_DUPLEX - dmDuplex DM_YRESOLUTION - dmYResolution DM_TTOPTION - dmTTOption DM_COLLATE - dmCollate DM_FORMNAME - dmFormName DM_LOGPIXELS - dmLogPixels DM_BITSPERPEL - dmBitsPerPel DM_PELSWIDTH - dmPelsWidth DM_PELSHEIGHT - dmPelsHeight DM_DISPLAYFLAGS - dmDisplayFlags

DM_DISPLAYFREQUENCY - dmDisplayFrequency

DM_ICMMETHOD - dmICMMethod

(Windows 95)

DM_ICMINTENT - dmICMIntent

(Windows 95)

DM_MEDIATYPE - dmMediaType

(Windows 95)

DM_DITHERTYPE - dmDitherType

(Windows 95)

dmPrintQuality имеет четыре предопределенных значения: DMRES_HIGH - высокое качество;

DMRES_MEDIUM - среднее качество; DMRES_LOW - низкое качество; DMRES_DRAFT - самое низкое качество.

dmDuplex имеет следующие значения:

DMDUP_SIMPLEX; DMDUP_HORIZONTAL; DMDUP_VERTICAL.

dmTTOption имеет следующие значения:

102

DMTT_BITMAP - печатать шрифт TrueType как графику (по умолчанию в матричных принтерах);

DMTT_DOWNLOAD TrueType - загружаются как программный шрифт (по умолчанию в принтерах Hewlett-Packard,

которые используют Printer Control Language (PCL));

DMTT_SUBDEV - замещение шрифтами устройства для шрифтов TrueType (по умолчанию в принтерах PostScript®).

dmPaperSize имеет следующие значения:

 

 

PAPER_LETTER

письмо, от 8 1/2 на 11 дюймов

 

DMPAPER_LEGAL

официальный документ, 8 1/2 на

 

14 дюймов

 

 

DMPAPER_A4

лист A4, 210 на 297 миллиметров

DMPAPER_CSHEET

лист C, 17 на 22 дюймов

 

 

PAPER_DSHEET

листD, 22 на 34 дюймов

 

 

DMPAPER_ESHEET

лист E, 34 на 44 дюймов

 

 

DMPAPER_LETTERSMALL

малое письмо, 8 1/2

на

11

дюймов

 

 

 

DMPAPER_TABLOID

11 на 17 дюймов

 

 

DMPAPER_LEDGER

бухгалтерский документ,

17

на

11

 

 

 

 

дюймов

 

 

DMPAPER_STATEMENT

5 1/2 на 8 1/2 дюймов

 

 

DMPAPER_EXECUTIVE

эксклюзивный, 7 1/4 на 10 1/2

 

 

дюймов

 

 

DMPAPER_A3

листA3, 297 на 420 миллиметров

DMPAPER_A4SMALL

малый лист A4, 210 на 297

 

 

 

миллиметров

 

 

DMPAPER_A5

лист A5, 148 на 210 миллиметров

DMPAPER_B4

лист B4, 250 на 354 миллиметров

DMPAPER_B5

лист B5, 182 на 257 миллиметров

DMPAPER_FOLIO

8 1/2 на 13 дюймов

 

 

DMPAPER_QUARTO

215 на 275 миллиметров

 

 

DMPAPER_10X14

10 на 14 дюймов

 

 

DMPAPER_11X17

11 на 17 дюймов

 

 

DMPAPER_NOTE

записная книжка, 8 1/2 на 11

 

 

дюймов

 

 

DMPAPER_ENV_9

#9 конверт, 3 7/8 на 8 7/8 дюймов

103

DMPAPER_ENV_10

#10 конверт, 4 1/8 на 9 1/2 дюймов

DMPAPER_ENV_11

#11 конверт, 4 1/2 на 10 3/8

 

дюймов

DMPAPER_ENV_12

#12 конверт, 4 3/4 на 11 дюймов

DMPAPER_ENV_14

#14 конверт, 5 на 11 1/2 дюймов

DMPAPER_ENV_DL

DL конверт, 110 на 220

 

миллиметров

DMPAPER_ENV_C5

C5 конверт, 162 на 229

 

миллиметров

DMPAPER_ENV_C3

C3 конверт, 324 на 458

 

миллиметров

DMPAPER_ENV_C4

C4 конверт, 229 на 324

 

миллиметров

DMPAPER_ENV_C6

C6 конверт, 114 на 162

 

миллиметров

DMPAPER_ENV_C65

C65 конверт, 114 на 229

 

миллиметров

DMPAPER_ENV_B4

B4 конверт, 250 на 353

 

миллиметров

DMPAPER_ENV_B5

B5 конверт, 176 на 250

 

миллиметров

DMPAPER_ENV_B6

B6 конверт, 176 на 125

 

миллиметров

DMPAPER_ENV_ITALY

итальянский конверт, 110 на 230

 

миллиметров

DMPAPER_ENV_MONARCH конверт монархический, 3 7/8 на 7

 

1/2 дюймов

MPAPER_ENV_PERSONAL

6 3/4

конверт, 3 5/8 на 6 1/2

дюймов

 

 

DMPAPER_FANFOLD_US

14 7/8 на 11 дюймов

DMPAPER_FANFOLD_STD_GERMAN

8 1/2 на 12 дюймов

DMPAPER_FANFOLD_LGL_GERMAN

8 1/2 на 13 дюймов

dmCollate принимает значения:

DMCOLLATE_TRUEпосылать данные на принтер только для первой из копий;

DMCOLLATE_FALSE - посылать данные на принтер для каждой копии.

104

dmDisplayFlags принимает значения: DM_GRAYSCALE - нецветной режим; DM_INTERLACED - режим прореженного изображения

(interlaced).

dmICMMethod принимает значения:

DMICMMETHOD_NONE отключено; DMICMMETHOD_SYSTEM ICM управляется Windows. DMICMMETHOD_DRIVER ICM управляется драйвером

устройства. DMICMMETHOD_DEVICE ICM управляется устройством.

dmICMIntent принимает значения:

DMICM_SATURATE цветовая подборка оптимизируется по насыщенности цветов (используется в основном для графиков и ярких рисунков);

DMICM_CONTRAST цветовая подборка оптимизируется по контрастности цветов (используется в основном для фотографических изображений);

DMICM_COLORMETRIC цветовая подборка оптимизируется по требуемым цветам.

dmMediaType принимает значения:

DMMEDIA_STANDARD

обычная бумага;

DMMEDIA_GLOSSY

глянцевая бумага;

DMMEDIA_TRANSPARENCY

прозрачная пленка;

dmDitherType принимает значения:

DMDITHER_NONE DMDITHER_COARSE DMDITHER_FINE DMDITHER_LINEART DMDITHER_GRAYSCALE

105

Структура PRINTDLG

PRINTDLG структура используется в функции PrintDlg.

typedef struct tagPD {

 

 

DWORD

lStructSize; // размер данной структуры

 

 

sizeof(PRINTDLG)

HWND

hwndOwner; // идентификатор окна предка

HANDLE

hDevMode; // указатель на структуру

 

 

DEVMODE

HANDLE

hDevNames; // указатель на структуру

 

 

DEVNAMES

HDC

hDC;

// идентификатор контекста

 

 

устройства (device context)

WORD

Flags;

// флаг инициализации

 

 

диалога печати

WORD

nFromPage; // начальная страница печати

WORD

nToPage; // конечная страница печати

WORD

nMinPage;

// минимальное значение

 

 

nFromPage и nToPage

WORD

nMaxPage; // максимальное значение

 

 

nFromPage и nToPage

WORD

nCopies;

// количество копий

HINSTANCE

hInstance;

// идентификатор приложения

 

 

или модуля шаблона диалога

DWORD

lCustData; // специальные данные для

 

функций SetupHookProc и PrintHookProc

LPPRINTHOOKPROC lpfnPrintHook; // указатель на процедуру

PrintHookProc

LPSETUPHOOKPROC lpfnSetupHook; // указатель на процедуру

 

SetupHookProc

LPCTSTR

lpPrintTemplateName; // указатель на имя

 

шаблона диалога печати

LPCTSTR

lpSetupTemplateName; // указатель на имя

 

шаблона диалога установок печати

HANDLE

hPrintTemplate; // идентификатор шаблона

 

диалога печати

HANDLE

hSetupTemplate; // идентификатор шаблона

 

диалога установок печати

} PRINTDLG;

 

106

Битовая маска Flags может устанавливать флаги: PD_ALLPAGES - флаг показывающий, что все радиокнопки

(radio button) выбраны. Этот флаг установлен по умолчанию, когда флаги PD_PAGENUMS и PD_SELECTION не установлены.

PD_COLLATE - устанавливает маркер в свойство (check box) Collate (сравнение). Когда PrintDlg выполнена, этот флаг показывает, что маркер был установлен, но драйвер не поддерживает данную опцию.

PD_DISABLEPRINTTOFILE - запрещает доступ к свойству

(check box) "Печать в файл".

PD_ENABLEPRINTHOOK - вызывает процедуру, на которую указывает lpfnPrintHook .

PD_ENABLEPRINTTEMPLATE - показывает, что hInstance

и lpPrintTemplateName используются.

PD_ENABLEPRINTTEMPLATEHANDLE - показывает, что hPrintTemplate идентифицирует уже загруженный шаблон и lpPrintTemplateName игнорируется .

PD_ENABLESETUPHOOK – вызывает процедуру, на которую указывает lpfnSetupHook .

PD_ENABLESETUPTEMPLATE - показывает, что hInstance

и lpSetupTemplateName используются .

PD_ENABLESETUPTEMPLATEHANDLE - показывает, что hSetupTemplate идентифицирует уже загруженный шаблон и lpSetupTemplateName игнорируется .

PD_HIDEPRINTTOFILE - скрывает свойство «Печать в файл».

PD_NOPAGENUMS - отключает радиокнопку (radio button) "Страницы" .

PD_NOSELECTION - отключает радиокнопку (radio button) "Выбор".

PD_NOWARNING - отключает сообщение, которое должно появиться, если не установлен текущий принтер .

PD_PAGENUMS - устанавливает радиокнопку (radio button) "Страницы" в выбранное состояние.

PD_PRINTSETUP - отображается диалог установок печати . PD_PRINTTOFILE - маркирует свойство (check box)

"Печать в файл".

107

PD_RETURNDC - запрашивает у PrintDlg контекст устройства .(device context) принтера, возвращаемый в hDC .

PD_RETURNDEFAULT - не отображает диалог печати, а заполняет hDevNames и hDevMode (на входе установлены в NULL) указателями на структуры DEVMODE и DEVNAMES для текущего принтера .

PD_RETURNIC - возвращает информационный контекст. PD_SELECTION - радиокнопка (radio button) "Выбор"

включена .

PD_SHOWHELP - отображает кнопку "Помощь" (Help), hwndOwner должен быть определен, чтобы принять сообщение .

PD_USEDEVMODECOPIES - запрещает доступ к свойству задания нескольких копий документа, если драйвер не поддерживает режим копий, и запрещает доступ к свойству "Сравнение", если драйвер не поддерживает данный режим.

Структура DEVNAMES

DEVNAMES

typedef struct tagDEVNAMES {

WORD wDriverOffset; // смещение от начала структуры до строки с названием драйвера

WORD wDeviceOffset; // смещение от начала структуры до строки с названием устройства

WORD wOutputOffset; // смещение от начала структуры до строки с названием порта вывода

WORD wDefault; // используется для проверки того, что установленный принтер не изменился

} DEVNAMES;

Название устройства, на которое указывает wDeviceOffset, должно совпадать со значением поля dmDeviceName структуры DEVMODE. Если в wDefault установлен флаг DN_DEFAULTPRN, то проверяется был ли изменен текущий принтер с последней операции печати

108

 

Структура DOCINFO

DOCINFO структура используется функцией StartDoc

typedef struct {

 

int cbSize;

// размер структуры

LPCTSTR lpszDocName; // указатель на имя документа LPCTSTR lpszOutput; // указатель на выходной файл или порт

(x.prn , FILE:, LPT1:, и.т.д)

LPCTSTR lpszDatatype; // только для Windows 95, указатель на название типа данных

DWORD fwType; // только для Windows 95,

дополнительная информация о работе принтера

} DOCINFO;

Структура COMMTIMEOUTS

COMMTIMEOUTS структура используется в функциях

SetCommTimeouts и GetCommTimeouts. typedef struct _COMMTIMEOUTS {

DWORD ReadIntervalTimeout; // интервал между двумя поступающими символами при чтении (если следующий символ не поступит на устройство, передача считается законченной)

DWORD ReadTotalTimeoutMultiplier; // множитель для подсчета общего разрешенного времени приема

DWORD ReadTotalTimeoutConstant; // константа для подсчета общего разрешенного времени приема

DWORD WriteTotalTimeoutMultiplier; // для подсчета общего разрешенного времени передачи

DWORD WriteTotalTimeoutConstant; // константа для подсчета общего разрешенного времени передачи

} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

109

Общее время приема или передачи подсчитывается как количество символов, необходимых для приема или передачи, умноженное на переменную-множитель и прибавить переменнуюконстанту.

Структура COMMPROP

COMMPROP структура используется для получения свойств коммуникационного устройства функцией GetCommProperies.

typedef struct _COMMPROP {

WORD wPacketLength;

// длина пакета в байтах

WORD wPacketVersion;

// версия пакета

DWORD dwServiceMask;

// SP_SERIALCOMM всегда

 

установлен для устройств

 

коммуникации (включая модем)

DWORD dwReserved1;

// зарезервированно (не используется)

DWORD dwMaxTxQueue; // максимальный размер внутреннего буфера для передачи в байтах

DWORD dwMaxRxQueue; // максимальный размер внутреннего

 

буфера для приема в байтах

DWORD dwMaxBaud;

// максимальная скорость передачи в

 

битах на секунду (bps)

DWORD dwProvSubType;

// тип устройства

DWORD dwProvCapabilities;

// поддерживаемые режимы и

 

возможности

DWORD dwSettableParams; // устанавливаемые параметры

DWORD dwSettableBaud; // устанавливаемые скорости передачи

WORD

wSettableData;

// поддерживаемые количества

 

 

информационных бит

WORD

wSettableStopParity;// поддерживаемые количества

 

 

стоповых бит и паритеты

DWORD dwCurrentTxQueue; // размер внутреннего буфера для передачи в байтах

DWORD dwCurrentRxQueue; // размер внутреннего буфера для приема в байтах

DWORD dwProvSpec1; // специальные данные устройства DWORD dwProvSpec2; // специальные данные устройства

110