关于打印的一个问题!!! 我编制程序打印一张表格,在HP DeskJet 670C上进行调试,打印的效果能够满足要求,然后用一台HP 6L 进行测试,结果打印出来的字和表格都变小了,请问各位这是什么原因?该如何处理。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你大概使用了默认的映射模式其实打印机也有自己的打印精度定义,使用mm_text映射模式时,程序将自动使用这种映射模式来调整字体大小.在编写打印程序时,我一般使用mm_metric等代表实际长度的映射模式不知道这些对你是否有帮助 不知你具体是怎么写打印代码的,基本上是因为这两种打印机分辨率不同所产生的。如果是这样,解决办法是,主要是让坐标系的单位值固定,就是SetMapMode(),用:MM_HIENGLISH(每个单位0.001 inch);MM_HIMETRIC(每个单位0.001 mm);MM_HIENGLISH(每个单位0.01 inch);MM_HIMETRIC(每个单位0.01 mm)。当然,你也可以使用其他Mapping Mode,这样,你需要用GetDeviceCaps()得到显示/打印分辨率来调整你每个函数的输出坐标。 你应该SetMapMode()来调整映射模式,然后再GetWindowOrg()GetWindowExt()GetViewportExt()GetViewportOrg()来调整; 代码如下,请各位帮忙CPrintDialog dlg(FALSE);dlg.GetDefaults();// is a default printer set up?HDC hdcPrinter = dlg.GetPrinterDC();if (hdcPrinter == NULL){ MessageBox(_T("Buy a printer!"));}else{ // create a CDC and attach it to the default printer CDC dcPrinter; dcPrinter.Attach(hdcPrinter); // call StartDoc() to begin printing DOCINFO docinfo; memset(&docinfo, 0, sizeof(docinfo)); docinfo.cbSize = sizeof(docinfo); docinfo.lpszDocName = _T("my print"); // if it fails, complain and exit gracefully if (dcPrinter.StartDoc(&docinfo) < 0) { MessageBox(_T("Printer wouldn't initalize")); } else { // start a page if (dcPrinter.StartPage() < 0) { MessageBox(_T("Could not start page")); dcPrinter.AbortDoc(); } else { //划线,输出文本操作 dcPrinter.EndPage(); dcPrinter.EndDoc();// dcPrinter.SelectObject(pOldFont); } } } CEdit EN_UPDATE, How to prevent the typed character from displaying? 状态栏怎么创建? 时间字符串在SQL语句中如何比较大小 关于CWinThread的一个问题。 问个关于opengl的问题.. 如何在 VC 控制台程序中获取键盘输入? VC6 + ado + odbc + access2000 在98下运行及打包问题 我无法刷新主板BIOS了,能提供解决方案者得分(不使用编程卡之类的东东) 关于openGL和3DMAX 如何获得mac 地址 病毒? 在光盘上发布数据库,用什么数据库好?
其实打印机也有自己的打印精度定义,使用mm_text映射模式时,程序将自动使用这种映射模式来调整字体大小.
在编写打印程序时,我一般使用mm_metric等代表实际长度的映射模式不知道这些对你是否有帮助
MM_HIENGLISH(每个单位0.001 inch);
MM_HIMETRIC(每个单位0.001 mm);
MM_HIENGLISH(每个单位0.01 inch);
MM_HIMETRIC(每个单位0.01 mm)。
当然,你也可以使用其他Mapping Mode,这样,你需要用GetDeviceCaps()得到显示/打印分辨率来调整你每个函数的输出坐标。
GetWindowExt()
GetViewportExt()
GetViewportOrg()
来调整;
dlg.GetDefaults();// is a default printer set up?
HDC hdcPrinter = dlg.GetPrinterDC();if (hdcPrinter == NULL)
{
MessageBox(_T("Buy a printer!"));
}
else
{
// create a CDC and attach it to the default printer
CDC dcPrinter;
dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("my print"); // if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
MessageBox(_T("Printer wouldn't initalize"));
}
else
{
// start a page
if (dcPrinter.StartPage() < 0)
{
MessageBox(_T("Could not start page"));
dcPrinter.AbortDoc();
}
else
{
//划线,输出文本操作 dcPrinter.EndPage();
dcPrinter.EndDoc();
// dcPrinter.SelectObject(pOldFont);
}
}
}