VC程序在不同的电脑上打印字体大小不一样
小弟初学VC,自己工作中写了一个小程序,打印的部分是自己写的.在原来的电脑上打印出来,效果很好(纸张A4,主要内容是一个表格),但现在新换了一台电脑,打印出来的内容字体太大,一页内容只能打印出原一页内容的1/4,请问是什么原因?
原系统W2K,现系统WXP.
小弟初学VC,自己工作中写了一个小程序,打印的部分是自己写的.在原来的电脑上打印出来,效果很好(纸张A4,主要内容是一个表格),但现在新换了一台电脑,打印出来的内容字体太大,一页内容只能打印出原一页内容的1/4,请问是什么原因?
原系统W2K,现系统WXP.
解决方案 »
- 怎样用vc画excel折线图?
- 想好好学vc++,大家推荐一些入门书
- 我想做个简单的播放器,能播放 Media 和 Real,做个壳包住 Media 和 Real,不写解码的
- VC2005编写的Windows服务,如何修改其启动类型
- 改变对话框的背景色(变为白色)后, 使用 Static Text控件(Radio Button这类控件也一样 )时 文字的背景为那种灰色 该怎么该 ?(例如
- 在那里能找到 dlfcn.h 和 pkcs11types.h 呀。
- MFC常规Dll内如何调内调用自己的函数
- 关于windows录音机的使用
- 怎样设定一个区域,怎么确定鼠标再不在这个区域内
- 关于坐标问题
- VC编辑器中代码双击马上会关闭,是不是VC6 安装的问题????
- ReadFile函数,当设备返回STALL的时候,返回什么呢?
{
// TODO: Add your specialized code here and/or call the base class
PrintLedgerHeader(pDC, pInfo);
PrintLedgerBady(pDC, pInfo);
}void CReportView::PrintLedgerHeader(CDC *pDC, CPrintInfo *pInfo)
{
//表名 CString szText;
CString szNote;
int nHight[5] = {900, 700, 600, 500, 400}; szText.LoadString(IDS_PRINT_TITLE);
ASSERT(m_rectPage != CRect(0,0,0,0));
CRect rect = m_rectPage;
rect.DeflateRect(0, -nHight[0], 0, rect.Height() + nHight[1]);
CFont fontHead, * pOldFont;
fontHead.CreatePointFont(1400, _T("宋体"));
pOldFont = pDC->SelectObject(&fontHead);
pDC->DrawText(szText, rect, DT_CENTER | DT_TOP/*| DT_VCENTER | DT_SINGLELINE*/);
fontHead.DeleteObject();
pDC->SelectObject(pOldFont); //打印时间,页数
rect = m_rectPage;
rect.DeflateRect(0, -nHight[1], 0, rect.Height() + nHight[2]);
CTime tmNow = CTime::GetCurrentTime();
szText.Empty();
szText.LoadString(IDS_PRINT_DATE);
szNote.Format(_T("%s:%d-%02d-%02d"), szText, tmNow.GetYear(), tmNow.GetMonth(), tmNow.GetDay());
pDC->DrawText(szNote, rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE); szNote.Empty();
szText.Empty();
CString szDI, szTotal, szPage;
szDI.LoadString(IDS_FLT_DI);
szTotal.LoadString(IDS_PAGE_TOTAL);
szPage.LoadString(IDS_PAGE); szNote.Format(_T("%s %d %s %s %d %s"), szDI, pInfo->m_nCurPage, szPage,
szTotal, pInfo->GetMaxPage(), szPage);
pDC->DrawText(szNote, rect, DT_RIGHT | DT_VCENTER | DT_SINGLELINE);
//材料编号名称规格等
rect = m_rectPage;
rect.DeflateRect(0, -nHight[2], 0, rect.Height() + nHight[3]);
MT_MATSHORT_ITEM * pItem = (MT_MATSHORT_ITEM * )
m_pDoc->m_arPtr.GetAt(m_pDoc->m_nCurrent - 1);
szNote.Empty();
CString szMatNo, szMatName, szSpec, szUnit;
szMatNo.LoadString(IDS_MAT_COL_MATNO);
szMatName.LoadString(IDS_MAT_COL_MATNAME);
szSpec.LoadString(IDS_MAT_COL_MATSPEC);
szUnit.LoadString(IDS_MAT_COL_MATUNIT);
szNote.Format(_T("%s: %s %s: %s %s: %s %s: %s"),
szMatNo, pItem->szMatNo, szMatName, pItem->szMatName,
szSpec, pItem->szMatSpec, szUnit, pItem->szMatUnit);
pDC->DrawText(szNote, rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
//期间
rect = m_rectPage;
rect.DeflateRect(0, -nHight[3], 0, rect.Height() + nHight[4]);
szNote.Empty();
CString szPeriod, szTo;
szPeriod.LoadString(IDS_RPT_PERIOD);
szTo.LoadString(IDS_RPT_TO);
if (m_pDoc->m_nPeriodBgn == m_pDoc->m_nPeriodEnd)
{
szNote.Format(_T("%s: %d"), szPeriod, m_pDoc->m_nPeriodBgn);
}
else
{
szNote.Format(_T("%s: %d %s %d"), szPeriod, m_pDoc->m_nPeriodBgn,
szTo, m_pDoc->m_nPeriodEnd);
}
pDC->DrawText(szNote, rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);}void CReportView::PrintLedgerBady(CDC *pDC, CPrintInfo *pInfo)
{
int nWidth[13] = {MARGIN_LEFT * 3, 1050, 1450, 2520,
3040, 3440, 3860, //每列宽1340, 数量520 单价400 金额 420
4380, 4780, 5200,
5720, 6120, 6540};
int nHeight = 100;
int nStartRow = (pInfo->m_nCurPage - 1) * m_nPageRows;
int nEndRow = nStartRow + m_nPageRows;
int nRowCount = m_pListCtrl->GetItemCount();
if (nEndRow > nRowCount)
nEndRow = nRowCount;
int nCurPageRow = nEndRow - nStartRow;
int nPageHeight = (nCurPageRow + 2) * nHeight; CFont fontBady, * pOldFont;
fontBady.CreatePointFont(600, _T("宋体"));
pOldFont = pDC->SelectObject(&fontBady);
//表头
CRect rect = m_rectPage;
rect.DeflateRect(0, -350, 0, 0);
CRect rc(max(rect.left, nWidth[0]), rect.top,
min(rect.right, nWidth[12]),
min(rect.bottom, rect.top + nPageHeight)); //列宽 100;100;500;150;150;150;150;150;150;150;150;150 for (int i = 0; i < 13; i++)
{
if (i <= 3 || i == 6 || i == 9 || i == 12)
{
pDC->MoveTo(nWidth[i], rect.top);
pDC->LineTo(nWidth[i], min(rect.bottom, rect.top + nPageHeight));
}
else
{
pDC->MoveTo(nWidth[i], rect.top + nHeight);
pDC->LineTo(nWidth[i], min(rect.bottom, rect.top + nPageHeight));
}
} for (i = 0; i < nCurPageRow + 3; i++)
{
if (i != 1)
{
pDC->MoveTo(max(nWidth[0], rect.left), rect.top + nHeight * i);
pDC->LineTo(min(nWidth[12], rect.right), rect.top + nHeight * i);
// CString szText;
// szText.Format("%d", i - 2);
// CRect rc(rect.left + 400, rect.top + nHeight * (i - 1), rect.left + 800, rect.top + nHeight* i);
// pDC->DrawText(szText, rc, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
}
else
{
pDC->MoveTo(nWidth[3], rect.top + nHeight * i);
pDC->LineTo(min(nWidth[12], rect.right), rect.top + nHeight * i); }
} //表头
CString szText;
CRect rcCur;... //外边框
rc.InflateRect(10, 10);
pDC->MoveTo(rc.left, rc.top);
pDC->LineTo(rc.right, rc.top);
pDC->LineTo(rc.right, rc.bottom);
pDC->LineTo(rc.left, rc.bottom);
pDC->LineTo(rc.left, rc.top); fontBady.DeleteObject();
pDC->SelectObject(pOldFont); rc.InflateRect(0, 0, 0, 150);
CString szNote;
szNote.LoadString(IDS_UNIT);
szText.Empty();
szText.Format(_T("%s:%s"), szNote, theApp.m_szCompany);
pDC->DrawText(szText, rc, DT_LEFT | DT_BOTTOM | DT_SINGLELINE);
szText.Empty();
szNote.LoadString(IDS_OPERATOR);
szText.Format(_T("%s:%s"), szNote, theApp.m_szUserName);
pDC->DrawText(szText, rc, DT_RIGHT | DT_BOTTOM | DT_SINGLELINE);}