我在一个大项目打印所谓的小工具(派生于CWnd)实现打印功能。 在小工具类我创建了一个功能,把它渲染到设备上下文
PrintPageContent(CDC * pDC, const CRect & rContent, int page, int numPages)
{
PrintWindow(pDC, PW_CLIENTONLY);
pDC->Rectangle(rContent.left,rContent.top, rContent.right, rContent.bottom);
}
要轻松地渲染小工具我想过使用PrintWindow功能https://msdn.microsoft.com/en-us/library/x51z0shh.aspx
什么是始终工作?
- 一切都在打印预览
- 边境矩形,当我实际打印
心不是什么工作?
- 小工具心不是印在“实际印刷过程” /“打印到纸张”的一些情况下。
所以,我想通过PDF Creator和通过对2种不同的Windows机器(Win7的,Win8的)产生不同的结果在我的LAN 3台本地打印机打印(他们似乎总是相同的,所以我不认为它的某种未初始化的成员) 。 请告诉我非常奇怪的是,我对机器不同的结果,例如有一台打印机,其适用于PC A而不是PC B.
我可以告诉你,印刷只是不会我的应用程序内工作,所以它不是一个驱动程序问题。 正常打印文档,图像完全有效。 正如我已经告诉边框总是打印。
可能是什么原因呢? 你知道这类问题的任何案件?
提示:作为一个解决方法我试图从小工具直接通过BitBlt的UI的CPaintDC复制。 在这种情况下,我有同样的问题
为了找到问题我创建了一个小的测试项目,以重现这种情况。 这里是源代码
//Create Members
CDC pDC;
HDC hdc;
//Get Printer/Printer Settings
LPCSTR buffer = NULL;
GetDefaultPrinterName(buffer);
hdc = CreateDC("WINSPOOL", buffer, NULL, NULL);
pDC.Attach(hdc);
pDC.m_bPrinting = TRUE;
//Start Document Printing
pDC.StartDoc("TEST");
pDC.StartPage();
//Render Window
PrintWindow(&pDC,PW_CLIENTONLY);
//Render Frame Rectangle
CRect WindowRect;
GetClientRect(WindowRect);
WindowRect.MoveToXY(0,0);
CBrush brush;
brush.CreateSolidBrush(RGB(0,0,0));
pDC.FrameRect(WindowRect, &brush);
// Finish Printing
pDC.EndPage();
pDC.EndDoc();
我在这里面临着同样的问题。 相同的打印机正在为同一台PC的。 我认为唯一的问题可能是在我创建HDC线路
hdcBuffer = CreateDC("WINSPOOL", buffer, NULL, NULL);
我觉得这个电话与“printWindow”或“块传送”连接的问题。
或者,这会是一个MFC错误?