// 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_PTR 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 ; i<iRow+1 ; i++ )
	{
		x=(long)(((float)(lxAdd))*xmm+0.5f);
		y=(long)(((float)(lyAdd+fHeight*(float)i))*ymm+0.5f);
		w=(long)(((float)(fWidth))*xmm+0.5f);
		h=(long)(((float)(fHeight))*ymm+0.5f);
		pDC->MoveTo(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;   
		}
	}
*/

}