Методическое пособие 390
.pdfshort 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