windows系统中,提供了许多规格的打印纸,但在实际的应用中,这些纸的规格不满足需求,因此。在设计程序时,需要自定义纸张的大小。
新建对话框工程,对话框界面设置成如下所示:
添加两个编辑框,接受纸的宽度与高度的数据,一个按钮,更名为打印,并建立消息响应:
并为两个编辑框关联变量:
DDX_Text(pDX, IDC_EDIT1, m_Length);
DDX_Text(pDX, IDC_EDIT2, m_Width);
在对话框的实现文件中:
void CSetPaperDlg::OnButprint()
{
UpdateData(TRUE);
DWORD dwflags=PD_ALLPAGES | PD_NOPAGENUMS | PD_USEDEVMODECOPIES
| PD_SELECTION | PD_HIDEPRINTTOFILE | PD_RETURNDEFAULT; //打印对话框风格
CPrintDialog dlg(FALSE,dwflags,NULL); //构造打印都会看
if (dlg.DoModal() == IDOK) //显示打印对话框
{
//定义打印纸的大小
LPDEVMODE dev = dlg.GetDevMode();
dev->dmPaperSize = DMPAPER_USER;
dev->dmPaperLength = m_Length * 10; //打印纸长度
dev->dmPaperWidth = m_Width * 10; //打印纸宽度
dev->dmFields = DM_PAPERSIZE | DM_PAPERWIDTH
| DM_PAPERLENGTH | dev->dmFields;
CDC dc;
dc.Attach(dlg.GetPrinterDC()); //获得打印机设备上下文
dc.ResetDC(dev);
CFont TextFont;
TextFont.CreatePointFont(150,"宋体",&dc); //设置字体
dc.StartDoc("print"); //开始打印
dc.SelectObject(&TextFont); //选入字体
dc.TextOut(200,200,"山无棱,江水为竭,冬雷震震,夏雨雪,天地合,乃敢与君绝!");
dc.EndDoc(); //结束打印
TextFont.DeleteObject();
dc.DeleteDC();
}
}
头文件中:
int m_Length;
int m_Width;
由于图片上传不了,就不上传图片了。