Эта статья описывает типовой код, который показывает на экране диалоговое окно Печать (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); } |