16,551
社区成员
发帖
与我相关
我的任务
分享


void CExpressPrintView::OnDraw(CDC* pDC)
{
CExpressPrintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
if (!pDoc->m_Image.IsNull())
{
int nIndex1 = pDoc->m_nMoveXy.GetSize();
CFont font;
font.CreatePointFont(110, _T("宋体"), NULL);
CFont* pOldFont = pDC->SelectObject(&font);
pDoc->m_Image.Draw(pDC->m_hDC,0,0);
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0, 102, 255));
for (int nIndex2=0; 0<nIndex1; nIndex2++)
{
int nCoordinate1 = pDoc->m_nMoveXy.GetAt(--nIndex1);
int nCoordinate2 = pDoc->m_nMoveXy.GetAt(--nIndex1);
CString strData = pDoc->m_strData.GetAt(nIndex2);
if (nCoordinate1 || nCoordinate2)
{
if (_T("-1") == strData)
{
pDC->TextOut(nCoordinate1, nCoordinate2, _T("√"));
}else if (_T("0") == strData){}
else pDC->TextOut(nCoordinate1, nCoordinate2, strData);
}
}
pDC->SelectObject(pOldFont);
}
}
void CExpressPrintView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CExpressPrintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
CSize sizeTotal;
// TODO: 计算此视图的合计大小
if (!pDoc->m_Image.IsNull())
{
sizeTotal.cx = pDoc->m_Image.GetWidth();
sizeTotal.cy = pDoc->m_Image.GetHeight();
}
else
{
sizeTotal.cx = sizeTotal.cy = 100;
}
SetScrollSizes(MM_TEXT, sizeTotal);
}
// 设置纸张的大小
BOOL CExpressPrintView::OnPreparePrinting(CPrintInfo* pInfo)
{
CPrintDialog dlgPrint(FALSE);
LPDEVMODE pDM;
PRINTDLG pdlg;
if (!AfxGetApp()->GetPrinterDeviceDefaults(&pdlg))
return FALSE;
CExpressPrintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return FALSE;
pDM = (LPDEVMODE)GlobalLock(pdlg.hDevMode);
pDM->dmPaperSize = DMPAPER_USER;
pDM->dmPaperLength = pDoc->m_nIndentLeft;
pDM->dmPaperWidth = pDoc->m_nIndentRight;
pDM->dmFields = DM_PAPERSIZE | DM_PAPERWIDTH | DM_PAPERLENGTH | pDM->dmFields;
pDM->dmFields = pDM->dmFields | DMBIN_MANUAL;
pDM->dmDefaultSource = DMBIN_MANUAL;
GlobalUnlock(pdlg.hDevMode);
// 默认准备
return DoPreparePrinting(pInfo);
}
void CExpressPrintView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: 在此添加专用代码和/或调用基类
CScrollView::OnPrepareDC(pDC, pInfo);
//转换坐标映射方式
pDC->SetMapMode(MM_ANISOTROPIC);
//确定窗口大小
CSize size = CSize(800, 560);
// 设定窗口尺寸
pDC->SetWindowExt(size);
//得到实际设备每逻辑英寸的象素数量
int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX);
int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY);
//得到设备坐标和逻辑坐标的比例
long xExt = (long)size.cx * xLogPixPerInch / 96;
long yExt = (long)size.cy * yLogPixPerInch / 96;
// 设定视口尺寸
pDC->SetViewportExt((int)xExt, (int)yExt);
}