📄 pageprinter.cpp
字号:
// 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 + -