Использование стандартных диалогов - Отображение диалога печати
ОГЛАВЛЕНИЕ
Страница 4 из 7
Отображение диалога печати
Чтобы показать пользователю диалоговое окошко печати, позволяющее настроить параметры печати документа, сначала необходимо заполнить структуру PRINTDLG, а затем вызвать функцию PrintDlg.
Для того, чтобы получить контекст устройства выбранного принтера в переменной hDC, необходимо задать флаг PD_RETURNDC в переменной Flags структуры PRINTDLG.
Изначально, переменные hDevMode и hDevNames установлены в NULL. Если функция возвратит TRUE, то эти переменные будут содержать дескрипторы на структуры DEVMODE и DEVNAMES, содержащие информацию о пользовательском вводе, а так же информацию о принтере. Далее, эту информацию можно использовать для отправки данных на выбранный принтер.
Пример:
PRINTDLG pd;
HWND hwnd;
// Заполняем PRINTDLG
ZeroMemory(&pd, sizeof(pd));
pd.lStructSize = sizeof(pd);
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)
{
// Теперь можно что-нибудь вывести на печать.
// По завершению удаляем DC.
DeleteDC(pd.hDC);
}