16,472
社区成员
发帖
与我相关
我的任务
分享
void CDlg1Dlg::OnButton2()
{
// TODO: Add your control notification handler code here
CPrintDialog dlg(TRUE, PD_ALLPAGES, this);
dlg.m_pd.nMinPage = 1;
dlg.m_pd.nMaxPage = 10;
dlg.m_pd.nFromPage = 1;
dlg.m_pd.nToPage = 10;
if(dlg.DoModal() == IDOK)
{
HDC hDC = dlg.CreatePrinterDC();
DOCINFO docInfo = { sizeof(DOCINFO), _T("MyPrintDOC") };
StartDoc(hDC, &docInfo);
for(int iPage=dlg.m_pd.nFromPage-1; iPage<dlg.m_pd.nToPage; iPage++)
{
StartPage(hDC);
//在DC上绘制
{
TCHAR szText[64];
_stprintf_s(szText, _T("PAGE_%d"), iPage+1);
TextOut(hDC, 0, 0, szText, _tcslen(szText));
}
EndPage(hDC);
}
EndDoc(hDC);
DeleteDC(hDC);
}
}
void CMyPrintDlg::OnBnClickedOk()
{
CDC *m_pDC = GetDC();
double screenx, screeny;
screenx = m_pDC->GetDeviceCaps(LOGPIXELSX);
screeny = m_pDC->GetDeviceCaps(LOGPIXELSY);
CPrintDialog m_printdlg(FALSE);
if (m_printdlg.DoModal() == IDOK)
{
CDC *dc = GetDC();
dc->Attach(m_printdlg.GetPrinterDC());
dc->m_hDC = m_printdlg.GetPrinterDC();
double printx, printy;
printx = dc->GetDeviceCaps(LOGPIXELSX);
printy = dc->GetDeviceCaps(LOGPIXELSY);
double ratex, ratey;
ratex = printx / screenx;
ratey = printy / screeny;
DOCINFOW *ps = new DOCINFO;
ps->lpszDocName = char2wchar("printstart");
dc->CDC::StartDoc(ps);
dc->TextOut((int)ratex * 5, (int)ratex * 10, (CString)"hello world");
dc->CDC::EndDoc();
}
// TODO: 在此添加控件通知处理程序代码
CDialogEx::OnOK();
}