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

📄 lanesoftview.cpp

📁 用算法来实现一个收费系统
💻 CPP
字号:
// LaneSoftView.cpp : implementation of the CLaneSoftView class
//

#include "stdafx.h"
#include "LaneSoft.h"

#include "LaneSoftDoc.h"
#include "LaneSoftView.h"
#include "PanDlg1.h"
#include "IniData.h"
#include "BCEncode.h"
#include "conio.h"
#include "CDib.h"
#include "OperateDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView
extern 	CIniData theIniData;
extern CLaneSoftView * m_pMainView;
extern	DWORD err;
extern	BOOL Above;
extern  int Readable;
extern	int Rotate;
extern	int BType;
extern	int Height;
extern	int Wide;
extern	int Narrow;
extern	CString strText;
extern	PDFSETTINGS pdfSetting;
extern BOOL g_BBarUp;//栏杆起
extern BOOL g_BBarDown;//栏杆落
extern BOOL	g_BLaneGreen ;
extern BOOL g_BLaneRed;

IMPLEMENT_DYNCREATE(CLaneSoftView, CView)

BEGIN_MESSAGE_MAP(CLaneSoftView, CView)
	//{{AFX_MSG_MAP(CLaneSoftView)
	ON_WM_CREATE()
	ON_WM_PAINT()
	ON_WM_KEYDOWN()
	ON_MESSAGE(WM_CHANGE_LLAMP,OnChange_lLamp)
	ON_MESSAGE(WM_CHANGE_TLAMP,OnChange_tLamp)
	ON_MESSAGE(WM_CHANGE_BAR,OnChange_Bar)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView construction/destruction

CLaneSoftView::CLaneSoftView()
{
	// TODO: add construction code here
	m_pMemDC = new CDC;
	m_pBitmap = new CBitmap;
	m_pPanDlg1 = new CPanDlg1;
	m_pOperateDlg = new COperateDlg;
	m_pFrameDlg = new CFrameDlg;
	m_pMainView = this;
}

CLaneSoftView::~CLaneSoftView()
{
	delete m_pMemDC;
	delete m_pBitmap;
	delete m_pPanDlg1;
	delete m_pOperateDlg;
	delete m_pFrameDlg;
}

BOOL CLaneSoftView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	ASSERT(cs.style & WS_CHILD);
	if(cs.lpszClass == NULL)
	{
		cs.lpszClass = AfxRegisterWndClass(CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW);
	}
	return TRUE;

	//return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView drawing

void CLaneSoftView::OnDraw(CDC* pDC)
{
	DWORD old_textcolor,old_textmode;
	CFont * pOldFont;

	CLaneSoftDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if(m_dib.m_pBMI ==NULL || m_dib.m_pDIBData == NULL)
		return;
	CRect rect;


	GetClientRect(rect);
	m_dib.ShowDIB(pDC,0,0,rect.Width(),rect.Height());

	old_textcolor = pDC->SetTextColor(theIniData.m_dColor_Text7);
	old_textmode = pDC->SetBkMode(TRANSPARENT);
	pOldFont = pDC->SelectObject(&theIniData.m_fFont7);
	pDC->TextOut(10,90,"石家庄东港科技发展有限公司");
	pDC->SetTextColor(theIniData.m_dColor_Text6);
	pOldFont = pDC->SelectObject(&theIniData.m_fFont9);
	pDC->TextOut(90,140,"电  话: 0311-3824509"); 
	pDC->TextOut(90,160,"E-mail: dg@sjz.col.com.cn");
	pDC->SetTextColor(theIniData.m_dColor_Text5);
	pDC->SelectObject(&theIniData.m_fFont8);
	pDC->TextOut(30,20,"收费站车道微机收费系统");
	pDC->SelectObject(pOldFont);
	pDC->SetTextColor(old_textcolor);
	pDC->SetBkMode(old_textmode);

	m_usedib2.PasteDIB(pDC,0,250,250,350);
	m_usedib1.PasteDIB(pDC,0,250,250,350);
	m_usedib3.PasteDIB(pDC,0,190,240,110);


//	CBitmap * pOldBitmap = m_pMemDC->SelectObject(m_pBitmap);
//	pDC->BitBlt(0,0,m_nMaxX,m_nMaxY,m_pMemDC,0,0,SRCCOPY);
//	m_pMemDC->SelectObject(pOldBitmap);
//	pDC->SetStretchBltMode(COLORONCOLOR);
//	SetetchDIBits(pDC->GetSafeHdc(),0,0,799,599,
	//	          0,0,
	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView printing

BOOL CLaneSoftView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CLaneSoftView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CLaneSoftView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView diagnostics

#ifdef _DEBUG
void CLaneSoftView::AssertValid() const
{
	CView::AssertValid();
}

void CLaneSoftView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CLaneSoftDoc* CLaneSoftView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLaneSoftDoc)));
	return (CLaneSoftDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView message handlers

BOOL CLaneSoftView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}

int CLaneSoftView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
//	m_dib.LoadFromFile("d:\\lanesoft2\\res\\467005.bmp");
	m_dib.LoadFromFile(".\\res\\467005.bmp");
	m_usedib1.LoadFromFile(".\\res\\BAR.bmp");
	m_usedib2.LoadFromFile(".\\res\\TLAMP.bmp");
	m_usedib3.LoadFromFile(".\\res\\lLAMP.bmp");
	// TODO: Add your specialized creation code here
	CDC *pDC = GetDC();
	m_nMaxX = GetSystemMetrics(SM_CXSCREEN);
	m_nMaxY = GetSystemMetrics(SM_CYSCREEN);
    
	m_bBitmap.LoadBitmap(IDB_BITMAP3);
	m_pMemDC->CreateCompatibleDC(pDC);
	m_pBitmap->CreateCompatibleBitmap(pDC,m_nMaxX,m_nMaxY);
	CBitmap *pOldBitmap = m_pMemDC->SelectObject(m_pBitmap);
//	CBitmap *pOldBitmap = m_pMemDC->SelectObject(&Bitmap);
	CBrush brush;
	brush.CreateSolidBrush(theIniData.m_dColor_BK1);
 //  brush.CreateDIBPatternBrush(Bitmap.m_hObject,DIB_PAL_COLORS);


	CRect rect(-1,-1,m_nMaxX,m_nMaxY);
	m_pMemDC->FillRect(rect,&brush);
	m_pMemDC->SelectObject(pOldBitmap);
	ReleaseDC(pDC);

	m_pPanDlg1->Create(IDD_DIALOG1,this);
	m_pPanDlg1->ShowWindow(SW_SHOW);

	m_pOperateDlg->Create(IDD_OPERATE_DLG,this);
	m_pOperateDlg->ShowWindow(SW_SHOW);

	m_pFrameDlg->Create(IDD_FRAME_DLG,this);
	m_pFrameDlg->ShowWindow(SW_SHOW);

	return 	0;
}

void CLaneSoftView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	OnPrepareDC(&dc);
	OnDraw(&dc);
	// TODO: Add your message handler code here
	
	// Do not call CView::OnPaint() for painting messages
}


void CLaneSoftView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	    m_pOperateDlg->SendMessage(WM_USER_KEY,nChar,0);
      	CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
LONG CLaneSoftView::OnChange_Bar(UINT wParam,LONG lParam)
{
	if(wParam == 0)
	{

		m_usedib1.LoadFromFile(".\\res\\Bar1.bmp");
		g_BBarDown=FALSE;//HM 2001.10.15 抬杆
		g_BBarUp=TRUE;//HM 2001.10.15
		g_BLaneGreen= TRUE ;
		g_BLaneRed=FALSE;

	}
	else
	{
		m_usedib1.LoadFromFile(".\\res\\Bar.bmp");
		_outp(0x3e2,0x11);//降杆
		Sleep(300);
		_outp(0x3e2,0x31);
		g_BBarDown=TRUE;//HM 2001.10.15
		g_BBarUp=FALSE;//HM 2001.10.15
		g_BLaneGreen= FALSE ;
		g_BLaneRed=TRUE;
	}
	CDC *pDC = GetDC();
	m_usedib1.PasteDIB(pDC,0,250,250,350);
	ReleaseDC(pDC);
	RECT rect;
	if(wParam == 0)
	{
		rect.left = 65 ; rect.top = 450 ; 
		rect.right = 250 ; rect.bottom = 470;
	}
	else
	{
		rect.left = 20 ; rect.top = 250 ; 
		rect.right = 50 ; rect.bottom = 442;
	}
	InvalidateRect(&rect);

	return 0;
}
LONG CLaneSoftView::OnChange_tLamp(UINT wParam,LONG lParam)
{
	if(wParam == 0)
	{
//		m_pOperateDlg->Setup_TLamp(1);
		m_usedib2.LoadFromFile(".\\res\\tLAMP2.bmp");
	}
	else
	{
//		m_pOperateDlg->Setup_TLamp(0);
		m_usedib2.LoadFromFile(".\\res\\tLAMP1.bmp");
	}

	CDC *pDC = GetDC();
	m_usedib2.PasteDIB(pDC,0,250,250,180);
	ReleaseDC(pDC);
	if(wParam == 0)
		m_usedib2.LoadFromFile(".\\res\\tLAMP02.bmp");
	else
		m_usedib2.LoadFromFile(".\\res\\tLAMP01.bmp");


	return 0;
}

LONG CLaneSoftView::OnChange_lLamp(UINT wParam,LONG lParam)
{
	if(wParam == 0)
		m_usedib3.LoadFromFile(".\\res\\lLAMP1.bmp");
	else
		m_usedib3.LoadFromFile(".\\res\\lLAMP.bmp");

//	RECT rect;
//	rect.top = 230; rect.left = 100; rect.right = 240; rect.bottom = 280;
	CDC *pDC = GetDC();
	m_usedib3.PasteDIB(pDC,0,190,240,110);
	ReleaseDC(pDC);

//InvalidateRect(&rect);
	return 0;
}





void CLaneSoftView::OnPrint(CDC* pDC, CPrintInfo* pInfo) 
{
	// TODO: Add your specialized code here and/or call the base class
	CLaneSoftDoc* pDoc = GetDocument() ;
	ASSERT_VALID(pDoc);
	pDoc->mBit.Attach(MakeBarCode(BType,strText.GetBuffer(0),Narrow,Wide,Height,Rotate,Readable,&err));

	int dpi = pDC->GetDeviceCaps(LOGPIXELSX);
	int width = pDC->GetDeviceCaps(HORZRES);
	int height = pDC->GetDeviceCaps(VERTRES);

	CDC mDC;
	CBitmap OldBit;
	BITMAP bm;
	if (pDoc->mBit.m_hObject != NULL)
	{
		pDC->SetBkMode(TRANSPARENT);
		pDC->SelectStockObject(NULL_BRUSH);
		pDoc->mBit.GetObject(sizeof BITMAP,&bm);

		mDC.CreateCompatibleDC(pDC);
		OldBit.Attach(mDC.SelectObject(&(pDoc->mBit)));

		int w = bm.bmWidth;
		int h = bm.bmHeight;

		int x = (width - w ) /2;
		int y = (height - w ) /2;

		pDC->BitBlt(x,y,bm.bmWidth,bm.bmHeight ,&mDC,0,0,SRCCOPY);

		mDC.SelectObject(&OldBit);
	}
	
//	CView::OnPrint(pDC, pInfo);
}

⌨️ 快捷键说明

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