Эта статья описывает типовой код, который показывает на экране диалоговое окно Печать (Print), так что пользователь может выбирать параметры для печати документа. Типовой код сначала инициализирует структуру PRINTDLG, а затем вызывает функцию PrintDlg, чтобы показать диалоговое окно.
Этот пример устанавливает флажок PD_RETURNDC в члене Flags структуры PRINTDLG. Это заставляет функцию PrintDlg возвратить в члене hDC дескриптор контекста устройства для выбранного принтера. Вы можете использовать этот дескриптор, чтобы выполнить вывод данных на принтер.
При вводе данных, типовой код устанавливает члены hDevMode и hDevNames в значение ПУСТО (NULL). Если функция возвращает значение ИСТИНА (TRUE), эти члены возвращают дескрипторы структурам DEVMODE и DEVNAMES, содержащим вводимые данные пользователем и информацию о принтере. Вы можете использовать эту информацию, чтобы подготовить вывод данных, которые будут пересланы в выбранный принтер.
Пример
PRINTDLG pd;
HWND hwnd;
// Инициализация PRINTDLG
ZeroMemory(&pd, sizeof(PRINTDLG));
pd.lStructSize = sizeof(PRINTDLG);
pd.hwndOwner = hwnd;
pd.hDevMode = NULL; // не забудьте сохранить или
// освободить hDevMode
pd.hDevNames = NULL; // То же самое для hDevNames
pd.Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC;
pd.nCopies = 1;
pd.nFromPage = 0xFFFF;
pd.nToPage = 0xFFFF;
pd.nMinPage = 1;
pd.nMaxPage = 0xFFFF;
if (PrintDlg(&pd)==TRUE)
{
// Вызовы GDI, чтобы выполнить вывод данных.
// Удаление DC, когда все выполнено.
DeleteDC(pd.hDC);
}
|