为什么打印机打出来的字体与在对话框设备环境上相比大好多好多?
我在对话框中画了一个矩形Rectangle(x,y,450+x,280+y);然后又TextOut(12+x,10+y,"大");这时对话框里显示好大一个矩形,矩形的左上角有一个相对小的汉字。
然后我加了几行代码,好支持打印功能。
结果大出来的矩形倒是正常的,可是字大的离谱,本来是这样的:
__________________________
|
| 大
|
|
|
|
打出来的成这样了
__________________________
|
| +
| ++++++++++++++
| +
| + +
| + +
| + +
而且我在设备说明上加了MM_LOENGLISH映射,打出来的东西应该什么都是反的,现在其他的确实都是反的,但字都还是正的。好像字体根本不管MM_LOENGLISH的设置的。
关键的几个代码片断:
下面的一段程序是对话框里一个按钮的响应程序片断。
CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this);
if (dlgPrint.DoModal()==IDOK)
{
CDC dcPrint;
dcPrint.Attach(dlgPrint.GetPrinterDC());
DOCINFO myPrintJob;
myPrintJob.cbSize=sizeof (myPrintJob);
myPrintJob.lpszDocName="MyPrintJob";
myPrintJob.lpszOutput=NULL;
myPrintJob.lpszDatatype=NULL;
myPrintJob.fwType=NULL;
CShowBill billDC(&dcPrint,CPoint(20,0));这是我定义的一个在CDC &dcPrint上CPoint坐标开始作图的一个类,dcPrint地址传进去作为成员函数。
long page;
if (dcPrint.StartDoc(&myPrintJob)>=0)
while (pos!=NULL)
{
page=m_lc.GetNextSelectedItem(pos);
page=atol(m_lc.GetItemText(page,0));
dcPrint.StartPage();
billDC.Show(GetBill(page),page);//前面那个类的成员函数,调用了后面的代码;
dcPrint.EndPage();
};
dcPrint.EndDoc();
dcPrint.DeleteDC();
}
下面的代码是billDC.Show(GetBill(page),page);里的。
font.CreatePointFont(100,"宋体",pDC);
if (pDC->IsPrinting())
pDC->SetMapMode(MM_LOENGLISH);
pDC->SetBkMode(TRANSPARENT);
pDC->Rectangle(x,y,450+x,280+y);
pDC->TextOut(12+x,10+y,"页码:");
谢谢。