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

📄 pageprinter.cpp

📁 485通讯接口模块的编程应用
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// PagePrinter.cpp : implementation file
//

#include "stdafx.h"
#include "DK20DieselizeDynamotor.h"
#include "PagePrinter.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPagePrinter dialog
extern BOOL bChinese;

CPagePrinter::CPagePrinter(CWnd* pParent /*=NULL*/)
	: CDialog(CPagePrinter::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPagePrinter)
	m_strPWR1 = _T("");
	m_strPWR2 = _T("");
	m_strPWR3 = _T("");
	//}}AFX_DATA_INIT
}


void CPagePrinter::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPagePrinter)
	DDX_Control(pDX, IDC_BTN_DK3PRINTER, m_btnPRINTER3);
	DDX_Control(pDX, IDC_BTN_DK2PRINTER, m_btnPRINTER2);
	DDX_Control(pDX, IDC_BTN_DK1PRINTER, m_btnPRINTER1);
	DDX_Control(pDX, IDC_COMBO3, m_cmbPWR3);
	DDX_Control(pDX, IDC_COMBO2, m_cmbPWR2);
	DDX_Control(pDX, IDC_COMBO1, m_cmbPWR1);
	DDX_CBString(pDX, IDC_COMBO1, m_strPWR1);
	DDX_CBString(pDX, IDC_COMBO2, m_strPWR2);
	DDX_CBString(pDX, IDC_COMBO3, m_strPWR3);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPagePrinter, CDialog)
	//{{AFX_MSG_MAP(CPagePrinter)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_BTN_DK1PRINTER, OnBtnDk1printer)
	ON_BN_CLICKED(IDC_BTN_DK3PRINTER, OnBtnDk3printer)
	ON_BN_CLICKED(IDC_BTN_DK2PRINTER, OnBtnDk2printer)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPagePrinter message handlers

BOOL CPagePrinter::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	VERIFY(m_fontW.CreateFont(
		24,                        // nHeight
		0,                         // nWidth
		0,                         // nEscapement
		0,                         // nOrientation
		FW_BOLD,                 // nWeight
		FALSE,                     // bItalic
		FALSE,                     // bUnderline
		0,                         // cStrikeOut
		ANSI_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           
		DEFAULT_PITCH | FF_SWISS, 
		_T("Arial")));

	CRect rcCMB( 320 , 50 , 520 , 70);
	CRect rcBTN( 540 , 50 , 650 , 80);

	m_cmbPWR1.MoveWindow(rcCMB);
	rcCMB.top = rcCMB.bottom + 20;
	rcCMB.bottom = rcCMB.bottom + 40;
	m_cmbPWR2.MoveWindow(rcCMB);
	rcCMB.top = rcCMB.bottom + 20;
	rcCMB.bottom = rcCMB.bottom + 40;
	m_cmbPWR3.MoveWindow(rcCMB);

	m_btnPRINTER1.MoveWindow(rcBTN);
	rcBTN.top = rcBTN.bottom + 10;
	rcBTN.bottom = rcBTN.bottom + 40;
	m_btnPRINTER2.MoveWindow(rcBTN);
	rcBTN.top = rcBTN.bottom + 10;
	rcBTN.bottom = rcBTN.bottom + 40;
	m_btnPRINTER3.MoveWindow(rcBTN);

	if (bChinese)
	{
		m_cmbPWR1.AddString("2 5 % 功 率");
		m_cmbPWR1.AddString("5 0 % 功 率");
		m_cmbPWR1.AddString("7 5 % 功 率");
		m_cmbPWR1.AddString("1 0 0 % 功 率");
		m_cmbPWR2.AddString("2 5 % 功 率");
		m_cmbPWR2.AddString("5 0 % 功 率");
		m_cmbPWR2.AddString("7 5 % 功 率");
		m_cmbPWR2.AddString("1 0 0 % 功 率");
		m_cmbPWR3.AddString("2 5 % 功 率");
		m_cmbPWR3.AddString("5 0 % 功 率");
		m_cmbPWR3.AddString("7 5 % 功 率");
		m_cmbPWR3.AddString("1 0 0 % 功 率");
	}
	else
	{
		m_cmbPWR1.AddString("2 5 % Power");
		m_cmbPWR1.AddString("5 0 % Power");
		m_cmbPWR1.AddString("7 5 % Power");
		m_cmbPWR1.AddString("1 0 0 % Power");
		m_cmbPWR2.AddString("2 5 % Power");
		m_cmbPWR2.AddString("5 0 % Power");
		m_cmbPWR2.AddString("7 5 % Power");
		m_cmbPWR2.AddString("1 0 0 % Power");
		m_cmbPWR3.AddString("2 5 % Power");
		m_cmbPWR3.AddString("5 0 % Power");
		m_cmbPWR3.AddString("7 5 % Power");
		m_cmbPWR3.AddString("1 0 0 % Power");
		m_btnPRINTER1.SetWindowText("1# Dynamotor Printer");
		m_btnPRINTER2.SetWindowText("2# Dynamotor Printer");
		m_btnPRINTER3.SetWindowText("3# Dynamotor Printer");
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPagePrinter::OnPaint() 
{
	CPaintDC dc(this); 
	CRect rcClient ;   
	GetClientRect(&rcClient)  ; 
	
	CDC memDc ; 
	memDc.CreateCompatibleDC(&dc)  ; 
	CBitmap bitmap1 ; 
	bitmap1.CreateCompatibleBitmap(&dc , rcClient.Width(),rcClient.Height())  ; 
	
	CBitmap *oldBitmp1 = memDc.SelectObject(&bitmap1)  ; 
	 
	
	memDc.FillSolidRect(&rcClient , RGB(173,211,198)) ; 
    
	CRect rc2(0 , 0 , 1280, 20) ;
	DrawGradientFill(&memDc , &rc2 , RGB(237,231,205) ,RGB(244,198,255),5) ;

	memDc.SetTextColor(RGB(0,0,0)) ; 
	CRect rcX(150 , 50 , 300, 70) ;
	memDc.SetBkMode(TRANSPARENT)   ; 
	
	if (bChinese)
	{
		memDc.DrawText(_T("柴油机发电机组额定功率状态信息打印"), &rc2 , DT_CENTER |DT_VCENTER	);
		memDc.DrawText("1 # 主机额定功率:", &rcX , DT_CENTER |DT_VCENTER	);
		rcX.top = rcX.bottom + 20;
		rcX.bottom = rcX.bottom + 40;
		memDc.DrawText("2 # 主机额定功率:", &rcX , DT_CENTER |DT_VCENTER	);
		rcX.top = rcX.bottom + 20;
		rcX.bottom = rcX.bottom + 40;
		memDc.DrawText("3 # 主机额定功率:", &rcX , DT_CENTER |DT_VCENTER	);
	}
	else
	{
		memDc.DrawText(_T("Diesel Dynamotor Information Print"), &rc2 , DT_CENTER |DT_VCENTER	);
		memDc.DrawText("1 # Dynamotor Power:", &rcX , DT_CENTER |DT_VCENTER	);
		rcX.top = rcX.bottom + 20;
		rcX.bottom = rcX.bottom + 40;
		memDc.DrawText("2 # Dynamotor Power:", &rcX , DT_CENTER |DT_VCENTER	);
		rcX.top = rcX.bottom + 20;
		rcX.bottom = rcX.bottom + 40;
		memDc.DrawText("3 # Dynamotor Power:", &rcX , DT_CENTER |DT_VCENTER	);
	}

	
	dc.BitBlt(0,0,rcClient.Width() , rcClient.Height() , &memDc , 0,0,SRCCOPY) ; 
	memDc.SelectObject(oldBitmp1)  ; 
	bitmap1.DeleteObject() ; 
	memDc.DeleteDC() ; 
		
	DeleteObject(oldBitmp1)  ; oldBitmp1 =NULL ; 
	ReleaseDC(&dc) ; 
}

void CPagePrinter::DrawGradientFill(CDC *pDC, CRect *pRect, COLORREF crStart, COLORREF crEnd, int nSegments)
{
	COLORREF cr;
	int nR = GetRValue(crStart);
	int nG = GetGValue(crStart);
	int nB = GetBValue(crStart);
	
	int neB = GetBValue(crEnd);
	int neG = GetGValue(crEnd);
	int neR = GetRValue(crEnd);
	
	if(nSegments > pRect->Height())
		nSegments = pRect->Height();
	
	int nDiffR = (neR - nR);
	int nDiffG = (neG - nG);
	int nDiffB = (neB - nB);
	
	int ndR = 256 * (nDiffR) / (max(nSegments,1));
	int ndG = 256 * (nDiffG) / (max(nSegments,1));
	int ndB = 256 * (nDiffB) / (max(nSegments,1));
	
	nR *= 256;
	nG *= 256;
	nB *= 256;
	
	neR *= 256;
	neG *= 256;
	neB *= 256;
	
	int nCY = pRect->Height() / max(nSegments,1),  nTop = pRect->top , nBottom =nTop;
	
	CPen *hpen =(CPen*) pDC->SelectStockObject(NULL_PEN);
	for (int i = 0; i < nSegments; i++, nR += ndR, nG += ndG, nB += ndB)
	{
		if (i == (nSegments - 1))
			nTop = pRect->bottom;
		else
			nTop +=  nCY;
		
		cr = RGB(nR / 256, nG / 256, nB / 256);
		
		CBrush br(cr);
		CBrush* pbrOld = pDC->SelectObject(&br);
		
		pDC->Rectangle(pRect->left, nTop+1, pRect->right , nBottom);
		pDC->SelectObject(pbrOld);
		br.DeleteObject() ; 
		DeleteObject(pbrOld)  ; 
		pbrOld =NULL ; 
		
		
		nBottom = nTop ; 
		
	}
	pDC->SelectObject(hpen)  ; 
	DeleteObject(hpen)  ; 
	hpen = NULL ; 
}

void CPagePrinter::OnBtnDk1printer() 
{
	CString s;
	m_cmbPWR1.GetWindowText(s);
	int i = s.FindOneOf(_T("%"));
	s=s.Left(i);
	Printer(0,s);
}

void CPagePrinter::OnBtnDk3printer() 
{
	CString s;
	m_cmbPWR3.GetWindowText(s);
	int i = s.FindOneOf(_T("%"));
	s=s.Left(i);
	Printer(1,s);
}

void CPagePrinter::OnBtnDk2printer() 
{
	CString s;
	m_cmbPWR2.GetWindowText(s);
	int i = s.FindOneOf(_T("%"));
	s=s.Left(i);
	Printer(2,s);
}

void CPagePrinter::Draw_LineHB(HDC hdcPrn, int x, int x1, int y)
{
	HGDIOBJ line =SelectObject(hdcPrn,CreatePen(PS_SOLID,10,RGB(255,0,0)));
	MoveToEx(hdcPrn,x,y,NULL);
	LineTo(hdcPrn,x1,y);
	DeleteObject(line);
}

void CPagePrinter::Draw_LineH(HDC hdcPrn, int x, int x1, int y)
{
	HGDIOBJ line =SelectObject(hdcPrn,CreatePen(PS_SOLID,5,RGB(255,0,0)));
	MoveToEx(hdcPrn,x,y,NULL);
	LineTo(hdcPrn,x1,y);
	DeleteObject(line);
}

void CPagePrinter::Draw_TextBB(HDC hdcPrn, int x, int y,CString strText)
{
	HGDIOBJ font=SelectObject(hdcPrn,CreateFont(
		130,                        // nHeight
		0,                         // nWidth
		0,                         // nEscapement
		0,                         // nOrientation
		FW_BOLD,                 // 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("宋体")));

	TextOut(hdcPrn,x,y,strText,strlen(strText));
}

void CPagePrinter::Draw_TextB(HDC hdcPro, int x, int y, CString strText)
{
	HGDIOBJ font=SelectObject(hdcPro,CreateFont(
		90,                        // 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")));

	TextOut(hdcPro,x,y,strText,strlen(strText));
}

void CPagePrinter::Draw_TextV(HDC hdcPro, int x, int y, CString strText)
{
	HGDIOBJ font=SelectObject(hdcPro,CreateFont(
		104,                        // nHeight
		0,                         // nWidth
		0,                         // nEscapement
		0,                         // nOrientation
		FW_BOLD,                 // 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")));

	TextOut(hdcPro,x,y,strText,strlen(strText));
}

void CPagePrinter::Draw_LineVB(HDC hdcPrn, int x, int y, int y1)
{
	HGDIOBJ line =SelectObject(hdcPrn,CreatePen(PS_SOLID,10,RGB(255,0,0)));
	MoveToEx(hdcPrn,x,y,NULL);
	LineTo(hdcPrn,x,y1);
	DeleteObject(line);
}

void CPagePrinter::Draw_LineV(HDC hdcPrn, int x, int y, int y1)
{
	HGDIOBJ line =SelectObject(hdcPrn,CreatePen(PS_SOLID,5,RGB(255,0,0)));
	MoveToEx(hdcPrn,x,y,NULL);
	LineTo(hdcPrn,x,y1);
	DeleteObject(line);
}

 void CPagePrinter::Printer(int iDK, CString strPWR)
 {
 	//创建打印机DC

⌨️ 快捷键说明

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