// DLG_Corp_PayToUser_Print.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "DLG_Corp_PayToUser_Print.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_Corp_PayToUser_Print dialog DLG_Corp_PayToUser_Print::DLG_Corp_PayToUser_Print(CWnd* pParent /*=NULL*/) : CDialog(DLG_Corp_PayToUser_Print::IDD, pParent) { //{{AFX_DATA_INIT(DLG_Corp_PayToUser_Print) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT memset(&m_PayData,0,sizeof(m_PayData)); } void DLG_Corp_PayToUser_Print::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_Corp_PayToUser_Print) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DLG_Corp_PayToUser_Print, CDialog) //{{AFX_MSG_MAP(DLG_Corp_PayToUser_Print) ON_WM_TIMER() ON_BN_CLICKED(IDC_CORP_LXRPRINT_SF, OnCorpLxrprintSf) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_Corp_PayToUser_Print message handlers void DLG_Corp_PayToUser_Print::SetParam(ANS_PayToUserData *pPayData) { m_PayData = *pPayData; } BOOL DLG_Corp_PayToUser_Print::OnInitDialog() { CDialog::OnInitDialog(); SetTimer(1 , 100 , NULL ); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DLG_Corp_PayToUser_Print::OnTimer(UINT nIDEvent) { CDialog::OnTimer(nIDEvent); if ( nIDEvent ==1 ) { KillTimer(nIDEvent); OnCorpLxrprintSf(); } } void DLG_Corp_PayToUser_Print::OnCorpLxrprintSf() { try { //#ifdef _DEBUG //预览 CPrnFrame * PrnFrame = new CPrnFrame(On_Print2,On_BeginPrint2,OnPreparePrinting2,this,this,false); PrnFrame->ShowWindow(SW_SHOW); PrnFrame->UpdateWindow(); //#else //打印 // CPrnFrame * PrnFrame = new CPrnFrame(On_Print2,On_BeginPrint2,OnPreparePrinting2,this,this,true); //#endif } catch( ...) { AfxMessageBox( _T("print error") ); } } RECT DLG_Corp_PayToUser_Print::MakeRect(long x, long y, long w, long h) { RECT rect={x,y,x+w,y+h}; return rect; } void DLG_Corp_PayToUser_Print::On_BeginPrint2(CDC *pDC, CPrintInfo *pInfo, void *pVoid) { } void DLG_Corp_PayToUser_Print::On_Print2(CDC *pDC, CPrintInfo *pInfo, void *pVoid) { DLG_Corp_PayToUser_Print * pDlg = (DLG_Corp_PayToUser_Print *)pVoid; CFont font,fontb,fontm,fontm2,*oldfont; CPoint point; int nWidth=pDC->GetDeviceCaps(HORZRES); int nHeight=pDC->GetDeviceCaps(VERTRES); int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX); int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY); float xmm = ((float)xLogPixPerInch/24.5f); float ymm = ((float)yLogPixPerInch/24.5f); font.CreateFont(-MulDiv(12,-pDC->GetDeviceCaps(LOGPIXELSY),72), 0,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET, OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY, VARIABLE_PITCH|FF_SWISS,_T("宋体")); fontb.CreateFont(-MulDiv(24,-pDC->GetDeviceCaps(LOGPIXELSY),72), 0,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET, OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY, VARIABLE_PITCH|FF_SWISS,_T("宋体")); float lxAdd=20.0f; float lyAdd=15.0f; float fWidth1 =30.0f; float fWidth =160.0f; float fHeight =8.0f; int iRow = 10; long x=0,y=0,w=0,h=0; long x2=0,y2=0,w2=0,h2=0; CString str; oldfont=pDC->SelectObject(&fontb); //打印快递单 x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd))*ymm+0.5f); w=(long)(((float)(fWidth))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); //标题 pDC->DrawText(_T("付款凭证") ,&pDlg->MakeRect(x,y,w,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); lyAdd = lyAdd + 14.0f; //画格子 for ( int i=0 ; iMoveTo(x,y); pDC->LineTo(x+w,y); } //画格子 for ( i=0 ; i<3 ; i++ ) { switch(i) { case 0: x=(long)(((float)(lxAdd))*xmm+0.5f); break; case 1: x=(long)(((float)(lxAdd+fWidth1))*xmm+0.5f); break; case 2: x=(long)(((float)(lxAdd+fWidth))*xmm+0.5f); break; } y=(long)(((float)(lyAdd))*ymm+0.5f); w=(long)(((float)(fWidth))*xmm+0.5f); h=(long)(((float)(fHeight*(float)(iRow)))*ymm+0.5f); pDC->MoveTo(x,y); pDC->LineTo(x,y+h); } float fRow=0.0f; oldfont=pDC->SelectObject(&font); //凭证号 x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd+fHeight*fRow))*ymm+0.5f); w=(long)(((float)(fWidth1))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); pDC->DrawText(_T("凭证号") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); x=(long)(((float)(lxAdd+fWidth1))*xmm+0.5f); w=(long)(((float)(fWidth-fWidth1))*xmm+0.5f); str.Format( _T("%d") , pDlg->m_PayData.lPayID); pDC->DrawText(str ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_LEFT|DT_VCENTER|DT_SINGLELINE); //付款类型 fRow++; x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd+fHeight*fRow))*ymm+0.5f); w=(long)(((float)(fWidth1))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); pDC->DrawText(_T("付款类型") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); x=(long)(((float)(lxAdd+fWidth1))*xmm+0.5f); w=(long)(((float)(fWidth-fWidth1))*xmm+0.5f); if ( pDlg->m_PayData.lPayType==0 ) { pDC->DrawText(_T("代理商酬金") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_LEFT|DT_VCENTER|DT_SINGLELINE); } if ( pDlg->m_PayData.lPayType==1 ) { if ( pDlg->m_PayData.lUserType==1 ) pDC->DrawText(_T("代理商退款") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_LEFT|DT_VCENTER|DT_SINGLELINE); else if ( pDlg->m_PayData.lUserType==10 ) pDC->DrawText(_T("ADC退款") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_LEFT|DT_VCENTER|DT_SINGLELINE); else pDC->DrawText(_T("终端用户退款") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_LEFT|DT_VCENTER|DT_SINGLELINE); } //企业名称 fRow++; x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd+fHeight*fRow))*ymm+0.5f); w=(long)(((float)(fWidth1))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); pDC->DrawText(_T("企业名称") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); x=(long)(((float)(lxAdd+fWidth1))*xmm+0.5f); w=(long)(((float)(fWidth-fWidth1))*xmm+0.5f); str.Format( _T("%s (ID:%d)") , pDlg->m_PayData.szCorpName , pDlg->m_PayData.lCorpID ); pDC->DrawText(str ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_LEFT|DT_VCENTER|DT_SINGLELINE); //付款金额 fRow++; x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd+fHeight*fRow))*ymm+0.5f); w=(long)(((float)(fWidth1))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); pDC->DrawText(_T("付款金额") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); x=(long)(((float)(lxAdd+fWidth1))*xmm+0.5f); w=(long)(((float)(fWidth-fWidth1))*xmm+0.5f); str.Format( _T("¥%.2f (条数:%d × 单价:%.4f)") , (float)pDlg->m_PayData.fPrice , pDlg->m_PayData.lSmsCount , pDlg->m_PayData.fPriceOne ); pDC->DrawText(str ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_LEFT|DT_VCENTER|DT_SINGLELINE); //出单时间 fRow++; x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd+fHeight*fRow))*ymm+0.5f); w=(long)(((float)(fWidth1))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); pDC->DrawText(_T("出单时间") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); x=(long)(((float)(lxAdd+fWidth1))*xmm+0.5f); w=(long)(((float)(fWidth-fWidth1))*xmm+0.5f); str.Format( _T("%04d年%02d月%02d日") , pDlg->m_PayData.tCD.wYear,pDlg->m_PayData.tCD.wMonth,pDlg->m_PayData.tCD.wDay ); pDC->DrawText(str ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_LEFT|DT_VCENTER|DT_SINGLELINE); //出单人 fRow++; x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd+fHeight*fRow))*ymm+0.5f); w=(long)(((float)(fWidth1))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); pDC->DrawText(_T("出单用户") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); x=(long)(((float)(lxAdd+fWidth1))*xmm+0.5f); w=(long)(((float)(fWidth-fWidth1))*xmm+0.5f); str.Format( _T("%s 签名:"), pDlg->m_PayData.szCD_User ); pDC->DrawText(str ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_LEFT|DT_VCENTER|DT_SINGLELINE); //批准人签名 fRow++; x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd+fHeight*fRow))*ymm+0.5f); w=(long)(((float)(fWidth1))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); pDC->DrawText(_T("批准人签名") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); //付款时间 fRow++; x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd+fHeight*fRow))*ymm+0.5f); w=(long)(((float)(fWidth1))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); pDC->DrawText(_T("付款时间") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); //实付金额 fRow++; x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd+fHeight*fRow))*ymm+0.5f); w=(long)(((float)(fWidth1))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); pDC->DrawText(_T("实付金额") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); x=(long)(((float)(lxAdd+fWidth1))*xmm+0.5f); w=(long)(((float)(fWidth-fWidth1))*xmm+0.5f); str= _T("¥ 万 仟 佰 十 元 角 分"); pDC->DrawText(str ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_LEFT|DT_VCENTER|DT_SINGLELINE); //出纳签名 fRow++; x=(long)(((float)(lxAdd))*xmm+0.5f); y=(long)(((float)(lyAdd+fHeight*fRow))*ymm+0.5f); w=(long)(((float)(fWidth1))*xmm+0.5f); h=(long)(((float)(fHeight))*ymm+0.5f); pDC->DrawText(_T("出纳签名") ,&pDlg->MakeRect(x+xmm,y,w-xmm*2,h),DT_CENTER|DT_VCENTER|DT_SINGLELINE); pDC->SelectObject(oldfont); font.DeleteObject(); fontb.DeleteObject(); } void DLG_Corp_PayToUser_Print::OnPreparePrinting2(CPrintInfo *pInfo) { pInfo->SetMaxPage(1); //只有1页 /* //设横向 CWinApp* pApp = AfxGetApp(); pApp->GetPrinterDeviceDefaults(&pInfo->m_pPD->m_pd); if ( pInfo ) { LPDEVMODE lpDevmode = pInfo->m_pPD->GetDevMode(); if ( lpDevmode ) { lpDevmode->dmOrientation = DMORIENT_LANDSCAPE; } } */ }