通用对话框专题之打印和页面设置对话框

来源:互联网 发布:log4j 写入数据库 编辑:程序博客网 时间:2024/05/20 22:41

今天就来说说打印对话框吧,顺便看看打印实现吧.呵呵

void CComDialogDlg::OnBtnPrintDlg()
{
 // TODO: Add your control notification handler code here
 UpdateData();  

 CPrintDialog dlg( FALSE,//是否是标准的WINDOWS打印对话框,还是PRINT SETUP对话框
  PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
  this );
 
 if( IDOK == dlg.DoModal() ) 
 { 
  CDC dc;
  DOCINFO docinfo;

  dc.Attach( dlg.GetPrinterDC() );  //把打印设备环境附加到DC对象
  docinfo.cbSize  = sizeof(DOCINFO); 
  docinfo.lpszDocName = "Test";  
  docinfo.lpszOutput = NULL;  
  docinfo.lpszDatatype = NULL;  
  docinfo.fwType  = 0;
  
  dc.StartDoc( &docinfo );    //通知打印机驱动程序执行一新的打印任务  
  dc.StartPage();       //通知打印机驱动程序打印新页    
  
  CFont font;  
  VERIFY( font.CreatePointFont( 150, "Arial", &dc ) );//为DC创建字体
  CFont * poldfont = dc.SelectObject( &font );  //保存现在的字体  
  
  dc.TextOut(0,0,m_strString);      //打印文字  
  
  dc.SelectObject( poldfont );      //恢复原来的字体
  font.DeleteObject();
  
  dc.EndPage();        //通知打印机驱动程序页结束  
  dc.EndDoc();        //通知打印机驱动程序打印完毕  
  
  DeleteDC(dc.Detach());   
 }

顺便在贴个页面设置的使用啊,呵呵.

void CComDialogDlg::OnBtnPspDlg()
{
 // TODO: Add your control notification handler code here
 CPageSetupDialog dlg;    //利用缺省参数构造页面设置对话框
   
 if( IDOK == dlg.DoModal() )
    {
        PAGESETUPDLG psd = dlg.m_psd; //获取信息
        m_strString.Format("页面大小为 %d * %d",  psd.ptPaperSize.x,psd.ptPaperSize.y);
    }
 
 UpdateData(FALSE);
}

下回是什么呢?记着关注啊!

原创粉丝点击