Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Петзолд Ч. Программирование для Windows 95 [22].pdf
Скачиваний:
76
Добавлен:
02.05.2014
Размер:
3.02 Mб
Скачать

67

{

short nMask;

char *szMask; char *szDesc;

}

BITS;

DEVCAPS2.RC

/*-----------------------------

DEVCAPS2.RC resource script

-----------------------------*/

 

#include "devcaps2.h"

 

DevCaps2 MENU

 

{

 

POPUP "&Device"

 

{

 

MENUITEM "&Screen",

IDM_SCREEN, CHECKED

}

 

POPUP "&Capabilities"

 

{

 

MENUITEM "&Basic Information",

IDM_BASIC, CHECKED

MENUITEM "&Other Information",

IDM_OTHER

MENUITEM "&Curve Capabilities",

IDM_CURVE

MENUITEM "&Line Capabilities",

IDM_LINE

MENUITEM "&Polygonal Capabilities",

IDM_POLY

MENUITEM "&Text Capabilities",

IDM_TEXT

}

 

}

 

Рис. 15.3 Программа DEVCAPS2

Поскольку программа DEVCAPS2 получает информационный контекст принтера, вы можете выбирать принтеры из меню программы DEVCAPS2, хотя каждый из принтеров в качестве выходного порта может иметь "none". При необходимости сравнить возможности разных принтеров вы можете использовать папку Printers для добавления различных драйверов принтеров.

Вызов функции PrinterProperties

Вменю Device программы DEVCAPS2 включена опция Properties (свойства). Для ее использования нужно сначала выбрать принтер из меню Device. При выборе опции Properties появляется всплывающее окно диалога. Откуда берется это окно диалога? Оно вызывается драйвером принтера, который требует, как минимум, задать размер листа. В большинстве драйверов принтера также предлагается выбор режима печати: portrait или landscape. Режим portrait (часто задаваемый по умолчанию) подразумевает, что узкая сторона листа находится сверху; а в режиме landscape вверху находится широкая сторона листа. При изменении режима, оно отражается в информации, которую программа DEVCAPS2 получает от функции GetDeviceCaps: горизонтальные размер и разрешающая способность меняются на вертикальные размер и разрешающую способность. Диалоговые окна свойств цветных плоттеров могут быть достаточно громоздкими, в которых задаются цвета установленных в плоттере перьев и тип используемой бумаги.

ВWindows 95 во всех драйверах принтера имеется экспортируемая функция ExtDeviceMode, которая вызывает окно диалога и сохраняет заданную пользователем информацию. Некоторые драйверы принтера сохранят полученную информацию в реестре или в их собственной секции файла WIN.INI. Те, которые сохраняют эту информацию, получают к ней доступ и в следующем сеансе работы Windows.

Впрограммах для Windows, в которых у пользователя есть возможность выбора принтера, для этого обычно применяется вызов функции PrintDlg. Эта полезная функция берет на себя всю заботу о взаимодействии с пользователем и обрабатывает все внесенные пользователем при подготовке к печати изменения. Кроме этого, функция PrintDlg вызывает диалоговое окно свойств, когда пользователь нажимает кнопку Properties. Попытайтесь проделать это в программе WORDPAD. Вы увидите то же самое окно диалога, которое появляется в программе DEVCAPS2.

Программа может также вывести на экран окно диалога свойств принтера напрямую, вызывая из драйвера принтера функции ExtDeviceMode или ExtDeviceModePropSheet. Однако, это не рекомендуется. Гораздо лучше вызывать окна диалога косвенно, с помощью функции PrinterProperties. Эта функция GDI может обеспечить