Учебное пособие: Семейства шрифтов в Windows

CreateDC( Drive, Device, Output, NULL ) : NULL;}

Этот способ позволяет легко получить хендл контекста текущего выбранного принтера. А если нам желательно выбирать или настраивать принтер, то самым удобным будет способ с использованием стандартного диалога (каждый драйвер принтера содержит собственный диалог используемый для его настройки; этот диалог мы можем вызвать, обратившись к функции ExtDeviceMode драйвера - однако то–же самое делает стандартный диалог).

При использовании стандартного диалога мы должны вызвать функцию PrintDlg(...), определенную в COMMDLG.H:

#include "commdlg.h"

BOOLPrintDlg( PRINTDLGFAR* lppd );

typedef struct tagPD {

DWORD lStructSize;

HWND hwndOwner;

HGLOBAL hDevMode;

HGLOBAL hDevNames;

HDC hDC;

DWORD Flags;

UINT nFromPage;

UINT nToPage;

UINT nMinPage;

UINT nMaxPage;

UINT nCopies;

HINSTANCE hInstance;

LPARAM lCustData;

UINT (CALLBACK* lpfnPrintHook)(HWND, UINT, WPARAM, LPARAM);

UINT (CALLBACK* lpfnSetupHook)(HWND, UINT, WPARAM, LPARAM);

LPCSTR lpPrintTemplateName;

LPCSTR lpSetupTemplateName;

HGLOBAL hPrintTemplate;

HGLOBAL hSetupTemplate;

} PRINTDLG;

Вы должны заполнить нужные поля (обычно почти все - 0) этой структуры и вызвать функцию PrintDlg() для выбора текущего принтера и его настройки. Функция возвращает результат TRUE (не 0), если контекст принтера успешно создан, или FALSE (0), если была нажата кнопка “Cancel” или возникла ошибка.

Параметр lStructSize задает размер данной структуры, он должен быть равен sizeof(PRINTDLG), hwndOwner задает хендл окна–пользователя диалога (может быть 0).

Два хендла глобальных объектов hDevMode и hDevNames используются для начальной инициализации диалога. Обычно они задаются 0, а функция PrintDlg() сама создает эти блоки и указывает их хендлы. Если Вы не планируете больше обращаться к функции PrintDlg(), то вы должны их уничтожить (с помощью функции GlobalFree()). Однако обычно эти блоки уничтожаются только при завершении всего приложения - так что при повторном вызове PrintDlg() в структуре PRINTDLG уже содержаться эти хендлы и информ

К-во Просмотров: 444
Бесплатно скачать Учебное пособие: Семейства шрифтов в Windows