C++ 如何获取打印机设备上下文?
我在Windows上尝试使用()打印增强的图元文件(EMF) 我目前正在使用屏幕上窗口的设备上下文显示它,但现在我想将它发送到打印机C++ 如何获取打印机设备上下文?,c++,windows,printing,C++,Windows,Printing,我在Windows上尝试使用()打印增强的图元文件(EMF) 我目前正在使用屏幕上窗口的设备上下文显示它,但现在我想将它发送到打印机 如何获取打印机的设备上下文并将其正确传递到此函数中?最简单的方法是在使用win32 API调用PRINTDLG后,使用PRINTDLG.hDevMode和PRINTDLG.hDevNames构造设备上下文,如果使用MFC,也可以调用CPrintDialog::GetPrinterDC 如果使用MFC: CPrintDialog dlgPrint(FALSE, PD
如何获取打印机的设备上下文并将其正确传递到此函数中?最简单的方法是在使用win32 API调用
PRINTDLG
后,使用PRINTDLG.hDevMode
和PRINTDLG.hDevNames
构造设备上下文,如果使用MFC,也可以调用CPrintDialog::GetPrinterDC
如果使用MFC:
CPrintDialog dlgPrint(FALSE, PD_USEDEVMODECOPIES);
HDC hPrinterDC = dlgPrint.GetPrinterDC();
或win32 API:
HDC hPrinterDC = NULL;
PRINTDLG dlgPrint;
if (PrintDlg(&dlgPrint) && dlgPrint.hDevMode != NULL)
{
DEVNAMES *pDevNames = (DEVNAMES*)GlobalLock(dlgPrint.hDevNames);
DEVMODE* pDevMode = NULL;
if (dlgPrint.hDevMode != NULL)
pDevMode = GlobalLock(dlgPrint.hDevMode);
hPrinterDC = CreateDC((LPCTSTR)pDevNames + pDevNames->wDriverOffset,
(LPCTSTR)pDevNames + pDevNames->wDeviceOffset,
(LPCTSTR)pDevNames + pDevNames->wOutputOffset,
pDevMode);
GlobalUnlock(dlgPrint.hDevNames);
if (dlgPrint.hDevMode != NULL)
GlobalUnlock(dlgPrint.hDevMode);
}
CreateDC可以做到这一点
HDC HDC=CreateDC(NULL,printerName,NULL,NULL)代码>
您可以从EnumPrinters获取printerName。有没有办法获取CDC对象?p.S.Reference=Petzold:Programming Windows(第五版),第604页