FAQ:WinAPI VCPP:вывод на печать с помощью DCD
Материал из Весельчак У
Как вывести на печать то, что я нарисовал в контексте устройства (класс CDC)?
Надо нарисовать все тоже самое в контексте принтера.
Пример:
//пытаемся получить хендл принтера, используемого по умолчанию //(через стандартный диалог) CPrintDialog dlg(FALSE); dlg.GetDefaults(); HDC hdcPrinter = dlg.GetPrinterDC(); if (hdcPrinter == NULL) { MessageBox("Принтер не установлен"); } else { // создаём контекст (CDC) и привязываем его к принтеру CDC dcPrinter; dcPrinter.Attach(hdcPrinter); // вызов StartDoc() для начала печати DOCINFO docinfo; memset(&docinfo, 0, sizeof(docinfo)); docinfo.cbSize = sizeof(docinfo); docinfo.lpszDocName = "Важный документ :)"; if (dcPrinter.StartDoc(&docinfo) < 0) { MessageBox("Не удалось инициализировать принтер"); } else { //смотрим номер стартовой страницы if (dcPrinter.StartPage() < 0) { MessageBox("Не могу начать печатать страницу"); dcPrinter.AbortDoc(); } else { //производим отрисовку графики на контексте //начали рисовать { CGdiObject* pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT); dcPrinter.TextOut(50, 50, _T("Hello World!"), 12); dcPrinter.SelectObject(pOldFont); //рисование окончено } //финализируем распечатывание документа dcPrinter.EndPage(); dcPrinter.EndDoc(); } } }