CPrintDialog dlg(FALSE);
//dlg.GetDefaults(GetPrinterDC
CDC dc;
// dlg.m_pd.lpPrintTemplateName
// dlg.m_pd.lpPrintTemplateName = (LPTSTR) MAKEINTRESOURCE(IDD_ABOUTBOX);
// dlg.m_pd.Flags |= PD_ENABLEPRINTTEMPLATE;
dlg.GetDefaults();
if (AfxGetApp()->GetPrinterDeviceDefaults(&dlg.m_pd))
{
dc.Attach(dlg.GetPrinterDC());
DOCINFO di;
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "Print BarCode";
di.lpszOutput = NULL;
di.lpszDatatype = NULL;
di.fwType = 0;
// dlg.DoModal();
// return ;
dc.StartDoc(&di); //到这儿就出错了。
dc.StartPage();
// dc.SetMapMode(MM_HIENGLISH);
// m_fg.Print(&dc, m_fg.m_nFlags);
// m_fg.PrintClient(&dc, NULL);
// m_fg.Attach(dlg.GetPrinterDC());
// m_fg.GetDC()->m_hDC;
// char* text = "打印测试文本";
// dlg.PrintAll();
// dc.DrawText("打印测试文本");
// dc.DrawText()
if(!dc.BitBlt(0, 0, 1000, 500, m_fg.GetDC(), 0, 0, SRCCOPY))
{
MessageBox("DC复制失败!");
}
dlg.PrintAll();
// dlg.PrintRange();
// float xScale = getXScale(printDC);
// float yScale = getYScale(printDC);
// double x = cm2Unit_W(xScale, 2.5);
// double y = cm2Unit_H(yScale, 2.5);
// TextOut(dc.m_hDC, 10, 10, (LPTSTR)text, strlen(text));
dc.EndPage();
dc.EndDoc();
}
// dlg.ReleaseDC(&dc);
ReleaseDC(&dc);
CString txt = "this is test\r\n";
txt += "this is the next row";
// dc.TextOut(10, 10, txt);
RECT rc = CRect(0, 0, 1000, 500);
dc.DrawText(txt, &rc, NULL);
http://www.vckbase.com/document/viewdoc/?id=1186