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