设为首页 加入收藏

TOP

6.7.5 使用"打印"对话框进行打印
2013-10-07 00:35:04 来源: 作者: 【 】 浏览:58
Tags:6.7.5 使用 " 打印 对话 进行

6.7.5  使用"打印"对话框进行打印

"打印"对话框提供了对打印机接口界面的支持,用户可以使用"打印"对话框进行打印。CPrintDialog类对"打印"对话框进行了封装,可以通过构造函数CPrintDialog构造"打印"对话框。

语法格式如下:

CPrintDialog( BOOL bPrintSetupOnly, 
DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES
| PD_NOPAGENUMS | PD_HIDEPRINTTOFILE |
PD_NOSELECTION, CWnd* pParentWnd = NULL );

bPrintSetupOnly:为TRUE,表示创建"打印设置"对话框;为FALSE,表示创建"打印"对话框。

dwFlags:自定义对话框的一组标记。

pParentWnd:标识"打印"对话框的父窗口指针。

"打印"对话框的常用函数如表6.11所示。

表6.11  "打印"对话框的常用函数

    < xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

DoModal

用于显示“打印”对话框

GetDeviceName

获取当前所选打印设备的名称

GetPrinterDC

获取打印设备上下文句柄

GetPortName

获取当前所选打印机端口

GetDriverName

获取当前打印机的驱动程序名称

 

例6.10  下面使用"打印"对话框进行打印。程序设计步骤如下:(实例位置:光盘\TM\sl\6\6)

(1)创建一个基于对话框的应用程序,将对话框的Caption属性修改为"使用'打印'对话框进行打印"。

(2)向对话框中添加一个按钮控件。

(3)在对话框头文件中声明变量,代码如下。

CString str[6];          //保存打印字符串的字符串数组
CFont font;          //字体对象
int screenx,screeny;         //窗口每英寸像素数
int printx,printy;          //打印机每英寸像素数
double ratex,ratey;         //打印机与屏幕的像素比
(4)定义一个自定义函数DrawText,用于绘制打印和预览的文本。代码如下:
void CPrintDialogDlg::DrawText(CDC *pDC, BOOL isprinted)  //自定义函数
{
CFont font;
if(!isprinted)           //预览
{
ratex = 1;          //当预览时设置比率为1
ratey = 1;          //当预览时设置比率为1
}
else            //判断是打印
{
pDC->StartDoc("printinformation");      //开始打印
}
font.CreatePointFont(120,"宋体",pDC);     //创建字体
for(int i=0;i<6;i++)         //设置循环
{
pDC->SelectObject(&font);      //将字体选入设备上下文
pDC->TextOut(int(50*ratex),int((50+i*30)*ratey),str[i]); //打印文本
}
if(isprinted)          //判断是打印
{
pDC->EndDoc();        //结束打印
}
}
(5)在OnPaint函数中获取屏幕每逻辑英寸的像素值并进行预览的绘制。代码如下:
CDC* pDC = GetDC();        //获得屏幕上下文
screenx = pDC->GetDeviceCaps(LOGPIXELSX);   //获得屏幕像素
screeny = pDC->GetDeviceCaps(LOGPIXELSY);   //获得屏幕像素
DrawText(pDC,FALSE);        //绘制打印预览

(6)处理WM_CTLCOLOR消息,在该消息中将对话框的背景颜色改为白色。

(7)处理"打印"按钮的单击事件,创建"打印"对话框进行打印,代码如下。

void CPrintDialogDlg::OnPrint()        //"打印"按钮单击事件的处理函数
{
DWORD dwflags=PD_ALLPAGES | PD_NOPAGENUMS | PD_USEDEVMODECOPIES
| PD_SELECTION | PD_HIDEPRINTTOFILE;    //设置"打印"对话框属性
CPrintDialog dlg(FALSE,dwflags,NULL);     //构造"打印"对话框
if(dlg.DoModal()==IDOK)        //显示"打印"对话框
{
CDC dc;          //声明设备上下文
dc.Attach(dlg.GetPrinterDC());      //获得打印机上下文
printx = dc.GetDeviceCaps(LOGPIXELSX);   //获得打印机像素
printy = dc.GetDeviceCaps(LOGPIXELSY);   //获得打印机像素
ratex  = (double)(printx)/screenx;     //计算屏幕和打印机像素比率
ratey  = (double)(printy)/screeny;      //计算屏幕和打印机像素比率
DrawText(&dc,TRUE);       //绘制打印文本
}
}
实例的运行结果如图6.29所示。
(点击查看大图)图6.29  使用"打印"对话框进行打印
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇6.7.6 使用"文件浏览".. 下一篇6.9 实践与练习

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: