⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printtestdlgdlg.cpp

📁 这个是在wince系统下
💻 CPP
字号:
// PrintTestDlgDlg.cpp : implementation file
//

#include "stdafx.h"
#include "PrintTestDlg.h"
#include "PrintTestDlgDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPrintTestDlgDlg dialog
_ITEMPRINTINFOR itemPrint;

CPrintTestDlgDlg::CPrintTestDlgDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPrintTestDlgDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPrintTestDlgDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CPrintTestDlgDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPrintTestDlgDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CPrintTestDlgDlg, CDialog)
	//{{AFX_MSG_MAP(CPrintTestDlgDlg)
	ON_BN_CLICKED(IDC_BTN_PRINT, OnBtnPrint)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPrintTestDlgDlg message handlers

BOOL CPrintTestDlgDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen

	// TODO: Add extra initialization here
	InitConstPrintStruct();
	return TRUE;  // return TRUE  unless you set the focus to a control
}

BOOL AdjustSelectPrinter(CString DeviceName,CString PortName,DWORD dwFlags)
{
	//打印机
//	if (DeviceName!="PCL Inkjet")
//	{
//		AfxMessageBox(DeviceName);
//		AfxMessageBox(_T("打印机必须选择PCL_Inkjet"));
//		return FALSE;
//	}
	//端口
//	if (PortName!="LPT1:")
//	{
//		AfxMessageBox(_T("端口必须选择LPT1:,如果下拉列表没有LPT1:,请检查打印机是否连线正确并上电"));
//		return FALSE;
//	}
	//纸张大小
	if ((dwFlags & PD_SELECTA4)==0)
	{
		AfxMessageBox(_T("必须选择A4幅面纸张"));
		return FALSE;
	}
	//草稿模式
//	if ((dwFlags & PD_SELECTDRAFTMODE)!=0)
//	{
//		AfxMessageBox(_T("不能选择草稿模式"));
//		return FALSE;
//	}
	//彩色
//	if ((dwFlags & PD_SELECTPRINTINCOLOR)==0)
//	{
//		AfxMessageBox(_T("必须选择彩色模式"));
//		return FALSE;
//	}
	//打印全部
	if ((dwFlags & PD_SELECTALLPAGES)==0)
	{
		AfxMessageBox(_T("必须选择全部打印"));
		return FALSE;
	}
	//横向打印
	if ((dwFlags & PD_SELECTPORTRAIT)==0)
	{
		AfxMessageBox(_T("必须选择纵向打印"));
		return FALSE;
	}

	
	return TRUE;
}

void CPrintTestDlgDlg::OnBtnPrint() 
{
	CPrintDialog dlg(FALSE);//让用户选择正确的打印机类型和端口号

	
	if (dlg.DoModal()==IDOK){
		//必须选择“确定”L"LPT1:"
		CString DeviceName=dlg.GetDeviceName();
		CString PortName=L"LPT1";//(LPCTSTR)dlg.GetPortName();
		int a = GetLastError();
		DWORD dwFlags=dlg.m_pd.dwFlags;
	// 	if (AdjustSelectPrinter(DeviceName,PortName,dwFlags)){
			//必须正确判断才打印
			//AfxMessageBox(_T("Setup Right"));
			//////////////////////////////////////////////////////
			HDC hdcPrinter = dlg.GetPrinterDC();
			
			if (hdcPrinter == NULL)
			{
				//没有打印机,或者在打印设置对话框中选择了×,而不是OK
				AfxMessageBox(_T("打印机配置不正确"));
			}
			else
			{
				// Create a CDC and attach it to the default printer.
				CDC dcPrinter;
				dcPrinter.Attach(hdcPrinter);

				// Call StartDoc() to begin printing.
				DOCINFO docinfo;
				memset(&docinfo, 0, sizeof(docinfo));
				docinfo.cbSize = sizeof(docinfo);
				docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");

				// If it fails, complain and exit gracefully.
				if (dcPrinter.StartDoc(&docinfo) < 0)
				{
					AfxMessageBox(_T("Printer would not initalize"));
				}
				else
				{
				// Start a page.
				  if (dcPrinter.StartPage() < 0)
				  {
					 AfxMessageBox(_T("Could not start page"));
					 dcPrinter.AbortDoc();
				  }
				  else
				  {
					 // Do some printing.
					 //黑白打印,大字
					 
					 CFont newFont;
					 newFont.CreateFont(
						   100,                        // nHeight
						   0,                         // nWidth
						   0,                         // nEscapement
						   0,                         // nOrientation
						   FW_NORMAL,                 // nWeight
						   FALSE,                     // bItalic
						   FALSE,                     // bUnderline
						   0,                         // cStrikeOut
						   ANSI_CHARSET,              // nCharSet
						   OUT_DEFAULT_PRECIS,        // nOutPrecision
						   CLIP_DEFAULT_PRECIS,       // nClipPrecision
						   DEFAULT_QUALITY,           // nQuality
						   DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
						   _T("Arial"));     

					 CFont* pOldFont = dcPrinter.SelectObject(&newFont);
					 dcPrinter.SetTextColor(RGB(120,150,0));
					 dcPrinter.ExtTextOut(800, 190,ETO_CLIPPED,NULL,itemPrint.sTile,itemPrint.sTile.GetLength(),NULL);
					 dcPrinter.SelectObject(pOldFont); 
					 newFont.DeleteObject(); 

		
					 //大字体,彩色
					 CFont newFont1;
					 newFont1.CreateFont(
						   50,                       // nHeight
						   0,                         // nWidth
						   0,                         // nEscapement
						   0,                         // nOrientation
						   FW_NORMAL,                 // nWeight
						   FALSE,                     // bItalic
						   FALSE,                     // bUnderline
						   0,                         // cStrikeOut
						   ANSI_CHARSET,              // nCharSet
						   OUT_DEFAULT_PRECIS,        // nOutPrecision
						   CLIP_DEFAULT_PRECIS,       // nClipPrecision
						   DEFAULT_QUALITY,           // nQuality
						   DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
						   _T("Arial"));     

					 
					 pOldFont = dcPrinter.SelectObject(&newFont1);
					 //右边字体,彩色
					 dcPrinter.SetTextColor(RGB(255,120,0)); 
					 dcPrinter.ExtTextOut(150, 305,ETO_CLIPPED,NULL,itemPrint.sName,3,NULL);
					 dcPrinter.ExtTextOut(150, 360,ETO_CLIPPED,NULL,itemPrint.sSex,3,NULL);
					 dcPrinter.ExtTextOut(150, 415,ETO_CLIPPED,NULL,itemPrint.sAge,3,NULL);
					 dcPrinter.ExtTextOut(150, 460,ETO_CLIPPED,NULL,itemPrint.sRemark,3,NULL);


					 //列表名称
					 dcPrinter.ExtTextOut(810,305,ETO_CLIPPED,NULL,itemPrint.sCode,itemPrint.sCode.GetLength(),NULL);
					 dcPrinter.ExtTextOut(1200,305,ETO_CLIPPED,NULL,itemPrint.sItemName,itemPrint.sItemName.GetLength(),NULL);
					 dcPrinter.ExtTextOut(1600,305,ETO_CLIPPED,NULL,itemPrint.sResult,itemPrint.sResult.GetLength(),NULL);
					 dcPrinter.ExtTextOut(1900,305,ETO_CLIPPED,NULL,itemPrint.sUnit,itemPrint.sUnit.GetLength(),NULL);
					 dcPrinter.ExtTextOut(2200,305,ETO_CLIPPED,NULL,itemPrint.sTarget,itemPrint.sTarget.GetLength(),NULL);

					 //下边
					 dcPrinter.ExtTextOut(805,805,ETO_CLIPPED,NULL,itemPrint.sReportDate,itemPrint.sReportDate.GetLength(),NULL);
					 dcPrinter.ExtTextOut(1300,805,ETO_CLIPPED,NULL,itemPrint.sCheckDoc,itemPrint.sCheckDoc.GetLength(),NULL);
					 dcPrinter.ExtTextOut(1800,805,ETO_CLIPPED,NULL,itemPrint.sCheckUpDoc,itemPrint.sCheckUpDoc.GetLength(),NULL);

					 dcPrinter.SelectObject(pOldFont); 
					 newFont1.DeleteObject();



					 //上线
					 CPen newPB(PS_SOLID,5,RGB(0,255,0));
					 
					 CPen* pOldPb = dcPrinter.SelectObject(&newPB);
					 dcPrinter.MoveTo(120,300);
					 dcPrinter.LineTo(2400,300);
					 dcPrinter.SelectObject(pOldPb);
					 newPB.DeleteObject();
					 //竖线
					 CPen newPA(PS_SOLID,5,RGB(0,255,0));
					 
					 pOldPb = dcPrinter.SelectObject(&newPA);
					 dcPrinter.MoveTo(800,300);
					 dcPrinter.LineTo(800,850);
					 dcPrinter.SelectObject(pOldPb);
					 newPB.DeleteObject();
					 //下线
					 CPen newPC(PS_SOLID,5,RGB(0,255,0));
					 
					 pOldPb = dcPrinter.SelectObject(&newPC);
					 dcPrinter.MoveTo(800,800);
					 dcPrinter.LineTo(2400,800);
					 dcPrinter.SelectObject(pOldPb);
					 newPB.DeleteObject();
					 
//					 //彩色线,变宽
//					 CPen newPen(PS_SOLID,10,RGB(0,255,0));
//					 CPen* pOldPen=dcPrinter.SelectObject(&newPen); 
//					 dcPrinter.MoveTo(750,750);
//					 dcPrinter.LineTo(950,950);
//					 dcPrinter.SelectObject(pOldPen); 
//					 newPen.DeleteObject();
					 //彩色打印矩形
//					 CBrush brush2(RGB(255,0,0));
//					 CRect rc(300,300,400,400);
//					 dcPrinter.FillRect(&rc,&brush2); 
//					 brush2.DeleteObject(); 

					 dcPrinter.EndPage();
					 dcPrinter.EndDoc();	 
					 
				 }
			   }
			   CDC::FromHandle(hdcPrinter)->DeleteDC();//非NULL才能释放
			}
			//CDC::FromHandle(hdcPrinter)->DeleteDC();//非NULL才能释放
		// }
	}		
}

void CPrintTestDlgDlg::InitConstPrintStruct()
{
	itemPrint.sTile = L"报告单";
	//左边
	itemPrint.sName = L"姓名:";
	itemPrint.sSex = L"性别:";
	itemPrint.sAge =L"年龄:";
	itemPrint.sRemark = L"备注:";

	//底下
	itemPrint.sReportDate = L"报告日期";


	//列表项目
	itemPrint.sCode = L"编号";
	itemPrint.sItemName = L"项目";
	itemPrint.sResult = L"结果";
	itemPrint.sUnit = L"单位";
	itemPrint.sTarget = L"参考值";	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -