关于vc 打印程序的一些有用代码

来源:互联网 发布:h3c f1000管理端口 编辑:程序博客网 时间:2024/05/22 22:41

 void   PrintTest()  
  {  
  CPrintDialog   pd(FALSE,   PD_ALLPAGES   |   PD_COLLATE   |   PD_NOPAGENUMS   |  

PD_HIDEPRINTTOFILE);  
  if(pd.GetDefaults())  
  {  
  DOCINFO   di;  
  memset(   &di,   0,   sizeof(DOCINFO)   );  
  di.cbSize   =   sizeof(DOCINFO);    
  di.lpszDocName   =   "Printing   Test";    
  di.lpszOutput   =   (LPTSTR)   NULL;    
  di.fwType   =   0;    
  HDC   hDC=pd.CreatePrinterDC();  
  CDC   dc;  
  dc.Attach(hDC);  
  dc.StartDoc(&di);    
  dc.StartPage();    
  dc.MoveTo(0,0);  
  dc.LineTo(1000,1000);  
  dc.EndPage();    
  dc.EndDoc();      
  dc.DeleteDC();    
  }  
  } 

HDC hdcPrint = GetDefaultPrinterDC();
 CPrintDialog pd(FALSE,PD_ALLPAGES|PD_ALLPAGES|PD_NOPAGENUMS,NULL);
 pd.DoModal();
 HDC hdcPrint = pd.CreatePrinterDC();
 if(hdcPrint == NULL)
 {
  MessageBox("打印机初始化失败!", "错误", MB_ICONSTOP);
  return;
 }


 /*   设置系统打印模式                
  #define   DMORIENT_PORTRAIT       1       //纵向  
  #define   DMORIENT_LANDSCAPE     2       //横向                                           

                                 */  
  /************************************************************************/  
  void   CXTReportApp::SetLandscapeMode(int   PrintMode)  
  {  
  PRINTDLG   pd;  
        pd.lStructSize=(DWORD)sizeof(PRINTDLG);  
        BOOL   bRet=GetPrinterDeviceDefaults(&pd);  
        if(bRet)  
        {  
              //   protect   memory   handle   with   ::GlobalLock   and   ::GlobalUnlock  
              DEVMODE   FAR   *pDevMode=(DEVMODE   FAR   *)::GlobalLock(m_hDevMode);  
              //   set   orientation   to   landscape  
      if(PrintMode==1)//纵向打印  
      pDevMode->dmOrientation=DMORIENT_PORTRAIT;  
      else   if(PrintMode==2)//横向打印  
      pDevMode->dmOrientation=DMORIENT_LANDSCAPE;      
              ::GlobalUnlock(m_hDevMode);  
        }  
  }
 

extern void DrawInfo(CDC &memDC, PRNINFO PrnInfo);

extern UINT m_nCxSelected ;

BOOL PrintSetup(HWND hParent, BOOL bDefault = FALSE);

BOOL Print(HWND hParent, LPCTSTR lpszDocName = "PrintListCtrl", BOOL bDefault = FALSE);

BOOL CPrintListCtrl::PrintSetup(HWND hParent, BOOL bDefault)
 {
  PRINTDLG stPD;

  memset(&stPD, 0, sizeof(stPD));

  stPD.lStructSize = sizeof(stPD);
  stPD.hwndOwner   = hParent;
  stPD.Flags       = PD_ALLPAGES | PD_DISABLEPRINTTOFILE |
                     PD_NOPAGENUMS | PD_NOSELECTION | PD_RETURNDC;
  stPD.hDevNames   =  NULL;
  stPD.hDevMode    = bDefault ? NULL : m_hDevMode;

  if (bDefault)
   {
    stPD.Flags |= PD_RETURNDEFAULT;
   }

  BOOL bRet = PrintDlg(&stPD);

  if (bRet == FALSE && CommDlgExtendedError()) return FALSE;

  if (bRet == FALSE && !CommDlgExtendedError()) return TRUE;

  ClearPrintDC();

  m_hPrintDC = stPD.hDC;

  return (m_hPrintDC != NULL);
 }

原创粉丝点击