多视图程序,除开App Wizard生成的默认C*View之外(不打印),自己从CView中派生的CMyView如何实现打印?
解决方案 »
- 求一个中等控制项目源码
- MapViewOfFile的疑问!!!
- 怎么获取列表控件(不是列表框)里的复选框(列表控件上面的)状态?
- 怎么清空下拉列表的编辑框内容,或者查找里面是否包含空串的选项?
- 几个小问题,请高手给个答案
- CDC类使用两问
- 关于滚动条的简单问题,急!!!
- 有没有用过研华PCI-1716L的,出现resourse conflict是怎么回事哦
- 怎样改变Dialog的背景色,多个Dialog,每个的颜色都不一样
- 请教:关于在ado编程中datagrid控件的问题,高手请进!谢谢
- 菜问题:为什么我用CTypedPtrList时没有办法保存文档
- VC6.0中类的模板函数是不是不能在类外定义??
CDC pd;
CPrintDialog printDlg(FALSE);
if(printDlg.DoModal() == IDCANCEL)
return; LPDEVMODE pDM = printDlg.GetDevMode();
if(pDM == NULL)
return;
pDM->dmOrientation = DMORIENT_LANDSCAPE;
pDM->dmPaperSize = DMPAPER_A4; pd.Attach(printDlg.GetPrinterDC());
pd.m_bPrinting = TRUE;
DOCINFO di;
memset(&di,0,sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "打印测试";
// di.lpszOutput = (LPTSTR)NULL;
// di.lpszDatatype = (LPTSTR)NULL;
di.fwType = 0;
short cxInch = pd.GetDeviceCaps(LOGPIXELSX);
short cyInch = pd.GetDeviceCaps(LOGPIXELSY);
CFont m_fontPrint;
m_fontPrint.CreateFont(MulDiv(fontsize,-cyInch,72),MulDiv(fontsize,-cxInch,72),FALSE,FALSE,FW_NORMAL,FALSE,
FALSE,FALSE,GB2312_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,"Arials");
CPen* Spen = new CPen(PS_SOLID,1,RGB(0,0,0));
CPen* Open = pd.SelectObject(Spen);
CFont* Ofont = pd.SelectObject(&m_fontPrint); int nError = pd.StartDoc(&di);
BOOL bError = FALSE;
if(nError == SP_ERROR)
{
goto Error;
}
OnPrepareDC(&pd);
OnDraw(&pd); nError = pd.StartPage();
if(nError <= 0)
{
bError = TRUE;
goto Error;
}
nError = pd.EndPage();
if(nError <= 0)
{
bError = TRUE;
goto Error;
}Error:
if(bError)
{
pd.AbortDoc();
}
else{
pd.EndDoc();
}
pd.SelectObject(Open);
pd.SelectObject(Ofont);
Spen->DeleteObject();
m_fontPrint.DeleteObject();
::GlobalUnlock(pDM);
ReleaseDC(&pd);